困惑
在学习 C++ 和 java 时,都学习了异常的捕获。
try
{
// 保护代码
}catch( ExceptionName e1 )
{
// catch 块
}
一直以为这是代码写不好的人才需要学习的内容。学到 python 时,我才了解到,原来异常捕获确是必要的。
当程序出现异常
Traceback (most recent call last):
File "E:/Projects/xxx.py", line 3, in <module>
print (firstnum/secondnum)
ZeroDivisionError: division by zero
这是一个异常。捕获异常目的就是,用其它处理方式使这段信息不被用户看到。无论是 pass 还是 提示其它信息。
为什么一定要捕获
请仔细看上段异常信息。
- 这段信息对用户不友好。一眼看不懂,当然,两眼一般也看不懂,因为客户不懂代码。
- 信息泄露。这段报错信息,泄露了我出错的代码文件名,甚至连出错的这一行代码都泄露了出来。这样,恶意用户可以对这行代码进行分析抓取漏洞进行攻击。这是 Python 底层报上来的信息,我们没法改,只能 try catch.
什么时候捕获
关于什么时候捕获。见过旧代码到处写 try,catch 的。也见过从来不写的。这两种对待方式都不太恰当。该不该写,还是要看代码是给谁看的,适合显示什么样的信息。毕竟,我们是面向对象编程嘛(虽然还没有对象)。
网友评论