//简单用法
try
{
throw new Error(10,"asdasdasd")
}
catch (e)
{
alert(e.message);
alert(e.description)
alert(e.number)
alert(e.name)
throw new Error(10,"asdasdasd")
}
//在JavaScript可以使用try...catch来进行异常处理。例如:
try {
foo.bar();
} catch (e) {
alert(e.name + ": " + e.message);
}
目前我们可能得到的系统异常主要包含以下6种:
EvalError: raised when an error occurs executing code in eval()
RangeError: raised when a numeric variable or parameter is outside of its valid range
ReferenceError: raised when de-referencing an invalid reference
SyntaxError: raised when a syntax error occurs while parsing code in eval()
TypeError: raised when a variable or parameter is not a valid type
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters
上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:
new Error();
new Error("异常信息");
手工抛出异常的方法如下:
try {
throw new Error("Whoops!");
} catch (e) {
alert(e.name + ": " + e.message);
}
如要判断异常信息的类型,可在catch中进行判断:
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
alert(e.name + ":" + e.message);
}
else if (e instanceof RangeError) {
alert(e.name + ": " + e.message);
}
// etc
}
Error具有下面一些主要属性:
description: 错误描述 (仅IE可用).
fileName: 出错的文件名 (仅Mozilla可用).
lineNumber: 出错的行数 (仅Mozilla可用).
message: 错误信息 (在IE下同description)
name: 错误类型.
number: 错误代码 (仅IE可用).
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).
因此为了更好的了解错误信息我们可以将catch部分改为如下形式:
try {
foo.bar();
} catch (e) {
if (browserType != BROWSER_IE) {
alert("name: " + e.name +
"message: " + e.message +
"lineNumber: " + e.lineNumber +
"fileName: " + e.fileName +
"stack: " + e.stack);
}
else {
alert("name: " + e.name +
"errorNumber: " + (e.number & 0xFFFF ) +
"message: " + e.message");
}
}
JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:
try {
throw new Date(); // 抛出当前时间对象
} catch (e) {
alert(e.toLocaleString()); // 使用本地格式显示当前时间
}
分享到:
相关推荐
当一个异常在`try`块中发生时,`finally`块中的代码无论如何都会被执行,无论是否发生异常。然而,在某些情况下,如果`finally`块没有正确地处理异常,程序可能不会显示出预期的错误信息。本篇文章将深入探讨`try`-`...
当在TRY块内部的代码发生错误时,程序会跳转到相应的CATCH块进行异常处理,而不是直接终止执行。这是通过"try_进入区域"语句开始一个异常处理区域,然后在代码执行结束后,使用"try_退出区域"来结束这个区域。在TRY...
当一个`try`块中的代码抛出异常,相应的`catch`块将捕获该异常并执行相应的处理代码。在某些情况下,我们可能需要对不同类型的异常进行不同的处理,这就是`try-catch`嵌套的用武之地。 首先,让我们理解`try-catch`...
在上面的代码中,如果 try 块中的代码引发了 AssertionError 异常,except 块中的代码将捕获该异常,并执行打印异常信息和保存截图的操作。然后,使用 raise 语句抛出该异常,以便在外层捕获和处理。 总结 ...
如果try块中的代码抛出了一个异常,那么控制权将立即转移到与之关联的catch块。 2. **catch**:catch块用于捕获try块中抛出的异常。每个try可以有多个catch块,每个catch对应处理一种类型的异常。当try块中的异常被...
除了`try/except`,还可以使用`finally`块来确保无论是否发生异常,某些代码总会被执行,例如关闭文件、清理资源等。 对于初学者来说,理解异常处理的概念并学会在代码中应用是至关重要的,因为这可以提高程序的...
在易语言中,TRY块用于启动一个异常处理区域,任何在这个块内的代码如果发生错误,程序会立即跳转到相应的EXCEPT块进行处理,而不是终止整个程序。这种方式使得程序能够优雅地处理错误,提高其健壮性。 下面是一个...
本文将详细介绍如何在Qt+mingw环境下实现程序异常崩溃信息的捕捉和跟踪,并提供一个名为"DumpTest"的测试代码示例。 首先,理解dump文件是关键。当应用程序崩溃时,操作系统可以生成一个内存转储文件(dump file)...
try块中的代码在执行时,如果出现异常,会被catch块捕获和处理。try块的语法结构如下: ```java try { // 可能出现异常的代码 } ``` 二、catch块 catch块是try-catch-finally语句的第二部分,用于捕获和处理try...
`finally`块是可选的,无论`try`和`catch`块中的代码是否抛出异常,`finally`块里的代码都会被执行。这通常用于资源清理,如关闭文件流、网络连接等。即使在`try`或`catch`块中有return语句,`finally`块的代码也会...
`try-catch`块是Java异常处理的核心部分,它允许程序员在代码可能出现问题的地方进行异常捕获和处理,避免程序因未预期的错误而崩溃。下面我们将详细讨论`try-catch`捕获异常的实例。 首先,`try`块是包含可能抛出...
在这个例子中,`try`块内的代码如果抛出了异常,程序会按照`catch`块的顺序查找匹配的异常类型。如果找到了匹配的类型,对应的`catch`块会被执行;如果没有找到,`...`通配符捕获器可以捕获所有未指定类型的异常。 ...
然而,C++的异常处理机制与C#不同,它使用`throw`和`catch`关键字,以及`try`块来抛出和捕获异常。当C#代码调用C++动态链接库(DLL)或托管C++代码时,我们需要理解这两种机制如何协同工作。 首先,C++异常是通过...
- **基本概念**:当try块内的代码触发异常时,控制权转移到except块,执行相应的异常处理代码。 - **示例**: ```delphi try // 可能引发异常的代码 except on E: Exception do begin // 处理异常 ...
(3)对抛出的异常使用try-catch进行异常处理。 实践二:使用try-catch-finally进行异常处理 需求说明 (1)对实践1的异常使用try-catch-finally进行异常处理 (2)在finally块输出是否抛出了异常 实现思路及关键...
当`try`块中的代码抛出一个异常时,Java会寻找匹配的`catch`块来处理这个异常。如果找到,那么就执行`catch`块中的代码;如果没有找到匹配的`catch`块,异常会继续向上层调用栈传播,直到被处理或者导致程序终止。 ...
`try`块中的代码如果抛出异常,`catch`块将执行,提供处理异常的机会。例如: ```java try { // 可能抛出异常的代码 } catch (IOException e) { // 处理IOException } ``` 4. 多重捕获:Java 7引入了多重捕获,...
`try`块包含可能会抛出异常的代码,如果在`try`块内发生异常,控制流将立即跳转到相应的`catch`块。例如: ```java try { // 可能抛出异常的代码 } catch (IOException e) { // 处理IOException } catch ...
如果在`try`块内的代码抛出异常,控制权会立即转移到相应的`catch`块,这样你就可以处理异常,而不会中断程序的执行。例如: ```csharp try { // 可能引发异常的代码 int result = Divide(10, 0); } catch ...
在C++中,异常处理是通过关键字`try`、`catch`和`throw`来实现的,这种机制允许程序员在可能出现错误的代码块中插入检查点,并在错误发生时将控制权转移给合适的错误处理代码。 **异常的抛出(throw)** 当一个函数...