Int*_*tra 32 javascript python exception-handling exception
在javascript中有没有像python'pass'那样的东西?
我想做javascript相当于:
try:
# Something that throws exception
catch:
pass
Run Code Online (Sandbox Code Playgroud)
Mat*_*all 43
pass是Python中的无操作.你需要它用于空块,因为
try:
# Something that throws exception
catch:
# continue other stuff
Run Code Online (Sandbox Code Playgroud)
是语法错误.在JavaScript中,您可以使用空catch块.
try {
// Something that throws exception
}
catch (e) {}
Run Code Online (Sandbox Code Playgroud)
dus*_*uff 31
有,这里是:
没错,什么都没有:
try {
somethingThatThrowsAnException();
} catch (e) {
}
Run Code Online (Sandbox Code Playgroud)
我想做的 javascript 相当于:
Run Code Online (Sandbox Code Playgroud)try: # Something that throws exception catch: pass
Python 没有 try/catch。它有尝试/例外。因此,替换catch为except,我们将得到:
try {
// throw any exception
} catch(err) {}
Run Code Online (Sandbox Code Playgroud)
catch 后面的空代码块相当于 Python 的pass.
最佳实践
然而,人们对这个问题的解释可能会略有不同。假设您想要采用与 Python try/ except 块相同的语义。Python 的异常处理更加细致,可让您指定要捕获的错误。
事实上,仅捕获特定错误类型被认为是最佳实践。
因此,Python 的最佳实践版本是,因为您只想捕获准备处理的异常,并避免隐藏错误:
try:
raise TypeError
except TypeError as err:
pass
Run Code Online (Sandbox Code Playgroud)
您可能应该子类化适当的错误类型,标准 Javascript 没有非常丰富的异常层次结构。我选择TypeError它是因为它与 Python 的TypeError.
为了在 Javascript 中遵循相同的语义,我们首先必须捕获所有错误,因此我们需要对此进行调整的控制流。pass所以我们需要用if 条件来确定错误是否不是我们想要的错误类型。缺乏 else 控制流是导致TypeError. 理论上,使用此代码,所有其他类型的错误都应该浮出水面并得到修复,或者至少被识别以进行额外的错误处理:
try { // try:
throw TypeError() // raise ValueError
} catch(err) { // # this code block same behavior as
if (!(err instanceof TypeError)) { // except ValueError as err:
throw err // pass
}
}
Run Code Online (Sandbox Code Playgroud)
欢迎评论!
| 归档时间: |
|
| 查看次数: |
19406 次 |
| 最近记录: |