有人能帮我解决一些看似简单但我从未真正理解的问题吗?异常!我知道如何编写异常,但无数带有变量的代码示例foo
并bar
没有帮助我了解这些变量在现实生活中的实际用途。
是否有可能停止执行过程?我必须承认我从未使用过它们,我只是不知道如何使用它们。但我确信它们很重要。我想如果有什么事情要发生,我就让它发生,它无论如何都会向屏幕抛出一个错误并停止执行。异常的目的是不出现这样的错误并捕获错误,并将消息传递给视图以输出?然后这引出了我的下一个问题,我怎么知道我的代码的哪些部分可能会中断?我应该把所有东西都包装在异常句柄中吗?这些应该在我的代码中有多广泛?
抱歉,有些东西似乎很容易理解,我只是从来没有设法正确理解它们的用法。如果有人能至少给我指出正确的方向,我将不胜感激,如果能给出一些关于哪些代码需要包装的真实示例,我将不胜感激。谢谢
答案1
我认为,当程序进入程序员认为错误的状态时,就会出现异常,以提醒程序此错误,并可能以另一种方式(捕获)继续执行或只是清理。
简单的东西应该总是有效的,比如使用小值的简单算术,字符串操作或简单的函数调用,我从不处理,除非它们可能是递归的或依赖于一些不稳定的输入。
当程序严重依赖用户操作或其他 I/O(文件、数据库、套接字)时,我通常使用 try/catch - 我无法非常准确地预测这些变量的值(如果它们依赖于远程服务,可能会耗尽内存或超时)
如果您还没有,请尝试编写一些 Java 程序,看看它的制作者会考虑哪些需要异常的情况。
以下是一个例子:我需要欧元兑美元的当前货币汇率
- 数据是否已在缓存中且不超过 5 分钟?则使用它。如果不是:
- 尝试使用网络服务从网站获取最新因素。
- 如果请求的值在响应中找不到或偏离 I扔例外
- 在抓住我会
- 尝试从数据库/文件中获取最后保存的因素
- 如果由于某种原因无法返回数据库中的数据,我扔再次
- 抓住异常,将数据库问题写入日志(可能在另一个 try/catch 中,以防磁盘已满并且无法写入日志)和
- 使用代码中的一些常数因子(或者写“抱歉,无法获取当前转换数据”