try-catch

本文详细解析axios中的.catch语句在JavaScript中的作用,探讨了六种原生错误类型和自定义错误类型,以及其在捕获跨域和异步错误上的局限性。通过实例说明try-catch的使用和常见错误类型处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:忽然想起来axios中的.catch

js是运行时报错 为什么请求接口报错后 页面没有阻塞 那就是因为用了 try catch错误捕获语句

先看语法

try {
    tryCode - 尝试执行代码块
}
catch(err) {
    catchCode - 捕获错误的代码块
}
finally {
    finallyCode - 无论 try / catch 结果如何都会执行的代码块
}

1.错误类型

1.1 原生的错误类型

js 代码在运行时可能产生的错误错误共有 6 种类型:

语法错误(SyntaxError);
类型错误(TypeError);
范围错误(RangeError);

eval 错误(EvalError);
    使用 eval 操作时,即使不正当的错误
    (eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。
    如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行         
    Javascript 语句。)
引用错误(ReferenceError);
URI 错误(URIError);
    操作url报错 encodeURI(), decodeURI()

这些错误类型都继承自Error类。

1.2  自定义错误类型

自定义一些错误类型,通过这些错误类型,就能看出是某个模块抛出的错误

class FingerError extends Error {
  constructor(message) {
    super(message);
    this.name = 'FingerError'; // 该错误的名称
    Error.captureStackTrace(this, this.constructor); // 获取错误堆栈的信息
  }
}

const err = new FingerError('get name error');
console.error(err); // FingerError: get name error
err instanceof FingerError; // true

2.1 缺点

不能捕获: 跨域错误   异步错误

饮水思源:前端中 try-catch 捕获不到哪些异常和错误 - 知乎

### Matlab 中 `try-catch` 的异常处理机制 在 MATLAB 编程中,错误处理是一种重要的编程实践。通过使用 `try-catch` 结构,程序可以在发生错误时捕获这些错误并采取相应的措施来解决问题或优雅地中止操作[^1]。 #### 基本语法结构 以下是 `try-catch` 语句的基本形式: ```matlab try % 尝试执行的代码块 catch ME % 发生错误后的处理逻辑 end ``` - **`try` 部分**:放置可能引发错误的代码。 - **`catch ME` 部分**:当 `try` 部分中的代码抛出异常时,MATLAB 自动跳转至 `catch` 部分,并将异常对象存储在变量 `ME`(MException 对象)中[^2]。 #### 示例代码 下面展示了一个简单的例子,说明如何利用 `try-catch` 处理潜在的除零错误: ```matlab function result = safeDivide(a, b) try result = a / b; catch ME fprintf('Error occurred: %s\n', ME.message); result = NaN; % 返回特殊值表示未定义的结果 end ``` 在这个函数中,如果参数 `b` 是零,则会触发一个运行时错误。此时,控制权转移到 `catch` 块,打印一条自定义消息并将结果设置为 `NaN` 表示无效运算[^3]。 #### 获取更详细的错误信息 可以通过访问 MException 对象的不同属性获取更多关于错误的信息,比如堆栈跟踪、标识符等: ```matlab try error('This is an intentional test error.'); catch ME disp(ME.identifier); % 显示错误ID disp(ME.stack); % 显示调用堆栈 rethrow(ME); % 如果无法处理则重新抛出该异常给更高层 end ``` 以上片段展示了如何记录调试所需的数据以及何时决定不自行解决而传递回上级调用者继续处置的情况[^4]。 ### 注意事项 尽管可以广泛运用 `try-catch` 来增强应用程序健壮性,但也应谨慎过度依赖它掩盖其他设计缺陷或者隐藏真正应该修复的根本问题所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值