hit博客2

自定义异常方法

Java标准库:
Exception

├─ RuntimeException
│ │
│ ├─ NullPointerException
│ │
│ ├─ IndexOutOfBoundsException
│ │
│ ├─ SecurityException
│ │
│ └─ IllegalArgumentException
│ │
│ └─ NumberFormatException

├─ IOException
│ │
│ ├─ UnsupportedCharsetException
│ │
│ ├─ FileNotFoundException
│ │
│ └─ SocketException

├─ ParseException

├─ GeneralSecurityException

├─ SQLException

└─ TimeoutException

一般抛出异常直接使用JDK定义类型,在大型项目中,我们可能会遇到标准异常无法表示的问题,这时我们就可以自定义异常来满足自己的使用需求。

步骤

  1. 必须继承自一个Exception(受检异常或者说编译异常) 或者一个RuntimeException(非受检异常,编译异常,运行时报错,抛出)
    建立一个合理的异常继承体系是非常重要的,一个常见的做法是自定义一个BaseException作为“根异常”,然后,派生出各种业务类型的异常。
    BaseException需要从一个适合的Exception派生,通常建议从 RuntimeException派生`
public class BaseException extends RuntimeException {
}

其他类型的异常就可以继承自该BaseException异常`

例如

import 'dart:async';
import 'package:http/http.dart' as http;
 
void main() {
  httpRequest();

}
 
Future httpRequest() async {
  try {

    var url = 'http://127.0.0.1/1.php';
    http.get(url).then((response) {

      if (response.statusCode == 200) {

        return response;
      } else if (response.statusCode == 404) {

        throw StatusException(type: StatusType.STATUS_404, msg: '找不到异常');

      } else if (response.statusCode == 500) {
        throw StatusException(type: StatusType.STATUS_500, msg: '服务器内部发生错误');
      } else {

        throw StatusException(type: StatusType.DEFAULT, msg: '请求异常');

      }

    });

  } catch (e) {

    return print('error:::' + e.toString());

  }
}

//枚举错误类型

enum StatusType {

  DEFAULT,
  STATUS_404,

  STATUS_500,

}
 

//自定义错误提示
class StatusException implements Exception {

  StatusType type;

  String msg;

  StatusException({this.type = StatusType.DEFAULT, this.msg});
 

  @override

  String toString() {

    return msg ?? 'Http请求异常!';

  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值