java - 捕获异常,重新抛出断言
问题描述
考虑以下示例。它被认为是一种不良做法吗?
注意:我知道重新抛出异常是可以的,但是 assertionerror 呢?
public static main(){
try {
doSmth();
} catch (WhateverException we) {
throw new AssertionError(e.getMessage());
}
}
public static void doSmth() throws WhateverException { }
解决方案
如果异常表明对您的代码来说是致命的情况,那么抛出错误以响应异常并不是一个坏习惯。然而:
- 没有必要
AssertionError
特别使用。我的意思是,如果你这样做很好,因为没有人会成为catch
一个,但你应该考虑只是做Error
,这样别人就不会去寻找assert
他们认为导致它的陈述。 - 当像这样链接一个 throwable 时,总是使用旧的异常来构造新的异常:
throw new AssertionError(we)
. 这将保留旧的堆栈跟踪。您可以(也应该)传递自定义消息。
推荐阅读
- linux - client_loop:发送断开连接:DM 服务器上的管道损坏
- android - Mixpanel:OptinTracking 用户删除配置文件属性(退出后)
- apache-spark - 如何在另一个 DF 的列中获取 DF 的一列中的值的计数?
- ruby-on-rails - Rails React 部署到 Heroku 时无法渲染 CSS
- arrays - 通过在函数内部进行采购创建的 bash 数组具有本地范围,但标量是全局的
- java - java中的Kafka消息传递和GUI数据交换
- python - 可以在逻辑表达式中引发异常/断言
- c - 如何在 C 中使用 EXEC + WC 命令剪切文件名
- react-native - React-Navigation/抽屉项目底部边框
- python - 如何避免 IndexError: list index out of range 当范围可以是随机拆分数量时,使用 Python 3?