自定义异常构建

首先写一个自定义异常,继承Exception,代码如下

public class NoMappingParamString extends Exception {
/*无参构造函数*/
public NoMappingParamString(){
super();
} //用详细信息指定一个异常
public NoMappingParamString(String message){
super(message);
} //用指定的详细信息和原因构造一个新的异常
public NoMappingParamString(String message, Throwable cause){
super(message,cause);
} //用指定原因构造一个新的异常
public NoMappingParamString(Throwable cause) {
super(cause);
}
}

使用自定义异常

如果自定义异常是为了提示,一定要用try..catch,不要直接用throw往外抛。这样只能被框架捕获。

    /*结果resultType字段set方法*/
public void setResultType(String resultType) {
this.resultType = resultType == null ? null : resultType.trim(); //resultType结果封装 //自定义一个resultTypeString字段,用来根据resultType的值(1,2,3)自动生成对应的文本
/*这样写的好处是集中管理,后台代码中只在此处管理,不好的地方是运营时突然加一个值就会返回未知类型,要更新要把后端重新编译发布,也就意味着要重启(把值传给前端让前端判断是不用重启的)。这种方案只适用于类型固定的字段*/
if (resultType!=null) {
int rt = Integer.parseInt(resultType); //将flag转换为int值
switch (rt) { //判断属于那种类型,就给resultTypeString赋予对应的值
case 1:
resultTypeString ="未处理";
break;
case 2:
resultTypeString ="自动解除";
break;
case 3:
resultTypeString ="已解除";
break;
default:
resultTypeString = "未知类型";
/*这里一定要try catch异常,因为这是set方法,throw出去大部分情况是被框架获取*/
try {
/*实例化自定义异常*/
NoMappingParamString exception = new NoMappingParamString("resultType类型未完善"+"未知resultType:"+resultType);
/*抛出异常*/
throw exception;
} catch (NoMappingParamString e) { //捕获异常
System.err.println("异常信息:"+e.getMessage()); //获取异常信息,就是上面传的message
e.printStackTrace(); //把栈信息打印出来
}
break;
}
}else {
resultTypeString = ""; //如果flag为null返回为空
}
}

仅仅为了提示,又不想自定义一个Exception,可以用RuntimeException。这个可以抛出异常,并准确定位,缺点是不能处理这个异常自定义异常的话可以捕获并且处理

public Queue(int initialSize) {
if (initialSize >= 0) {
this.maxSize = initialSize;
data = new Object[initialSize];
}else {
throw new RuntimeException("初始化大小不能小于0:"+initialSize);
}
}

自定义Exception异常的更多相关文章

  1. 正确使用Exception异常对象

    一.异常的构成 new Exception() 创建异常对象 throw 抛出异常对象(主要性能损耗位置) try{}catch{} 捕捉异常对象 C#里面异常对象分为两个子类ApplicationE ...

  2. java异常,异常处理,异常类 关键字:throws 和 throw 自定义的异常类

    package cn.kecheng; import java.util.Scanner; /**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序 异常处理机制:java中 ...

  3. 自定义Exception:MVC抛出自定义异常,并以Json方式返回

    相关链接 优点: 可以统一处理所有页面的异常,对所有需要返回json数据的异常,都用同样的方法throw new DVMException().页面展示,controller的错误处理方式一样 节省编 ...

  4. springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。

    springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...

  5. Java自定义Exception

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. @Valid 数据校验 + 自定义全局异常信息

    关于javax.validation.Validator校验的使用 对于要校验的实体类:其需要校验的字段上需要添加注解 实际例子 使用:首先要拿到 validator的子类 Validator val ...

  7. WebApi自定义全局异常过滤器及返回数据格式化

    WebApi在这里就不多说了,一种轻量级的服务,应用非常广泛.我这这里主要记录下有关 WebApi的相关知识,以便日后使用. 当WebApi应用程序出现异常时,我们都会使用到异常过滤器进行日志记录,并 ...

  8. terminate called without an active exception异常

    在gcc4.4下,采用回调机制写了一个类似std::thread的线程类. 但是使用时却发生了核心已转移的错误. main函数调用的代码大致是 int main(int argc, char *arg ...

  9. PLSQL_Oracle Exception异常分类、异常抛出、异常处理、异常传播(概念)

    2014-06-03 Created By BaoXinjian

随机推荐

  1. Delphi XE5 for Android (九)

    Delphi XE5 下TEdit控件有个属性:KeyboardType,如下图:   该属性决定了当焦点进入TEdit时,系统弹出的输入窗体,按照其帮助文件说明,不同取值的输入窗体不同,如下图: 根 ...

  2. 给斐讯K1刷机并拨号e信(湖北地区测试无问题)

    ◆购买斐讯k1路由器 路由器在天猫京东斐讯旗舰店都有售卖,我买的价格是159,不过有一张铃铛卡,一个月之后返还160元,相当于0元购 ◆路由器刷不死Breed 1.路由与电脑有线连接好,输入192.1 ...

  3. python 之 条件语句

    python 编程语言指定任何非0和非空(null)值为true, 0或者null为false. python 编程中if语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… else ...

  4. ZJOI 2015 幻想乡战略游戏(动态点分治)

    题意 https://loj.ac/problem/2135 思路 首先要明确一点,答案分布是有单调性的.什么意思呢?假设我们的答案在 \(u\) 节点,\((u,v)\) 之间有一条边且 \(u\) ...

  5. InnoDB锁笔记

    InnoDB主要使用行级锁(row lock),其行锁是通过在索引项上加锁而实现的,如果MySQL的执行计划没有用到索引,那么行锁也就无意义了 InnoDB的行锁是通过给索引上的索引(聚集,非聚集)添 ...

  6. snakemake使用笔记

    snakemake是一个用来编写任务流程的工具,用python编写的,因此其执行的流程脚本也比较通俗易懂,易于理解. 一.从一个简单的例子开始 1.安装snakemake 安装snakemake的方法 ...

  7. VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业、教育、游戏)

    VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业.教育.游戏) 可公对公签正规合同,开发票. 我们是北京的公司.专业团队,成员为专业 VR/AR 产品公司一线开发人员,有大型产品开发 ...

  8. 理解 Redis(4) - 关于 string 的更多命令(SETEX, SETNX, INCR, DECR, MSET...)

    上一节介绍了关于字符串值的一些基本命令, 这一节将介绍一些进阶命令: 清理终端: 127.0.0.1:6379> clear 设置一个键值对, 同时设置过期时间为10秒: 127.0.0.1:6 ...

  9. vs 2013 编译cocos2d-x-3.9

    下载地址:链接: https://pan.baidu.com/s/1IkQsMU6NoERAAQLcCUMcXQ 提取码: p1pb 下载完成后,解压 进入build 目录 使用vs 2013 打开工 ...

  10. python中常用的模块一

    一,常用的模块 模块就是我们将装有特定功能的代码进行归类,从代码编写的单位来看我们的程序,从小到大的顺序: 一条代码<语句块,<代码块(函数,类)<模块我们所写的所有py文件都是模块 ...