Java基础--异常处理
1.异常的传统处理方式
缺点:
[1] 通过判断影响执行效率。
[2] 判断逻辑和业务逻辑交织在一起,可维护性很差。
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = 0;
if(sc.hasNextInt()) {
num1 = sc.nextInt();
System.out.println("请输入第二个数:");
int num2 = 0;
if(sc.hasNextInt()) {
num2 = sc.nextInt();
if(0 == num2) {
System.out.println("除数不能为0!");
}else {
int r = num1 / num2;
System.out.println("num1/num2 = "+r);
}
}else {
System.out.println("第二个数输入不是数字");
}
}else {
System.out.println("第一个数输入不是数字!");
}
}
}
2.Java异常处理的定义
异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序。
3.Java异常处理机制
java中通过异常处理机制为程序提供异常处理的能力,保持程序继续运行而不中断!

4.try/catch
把有可能产生异常的代码放到try代码块中,catch代码块负责捕获并处理异常。
[1]正常执行,没出现任何异常

[2]出现异常,异常处理,正常结束

[3]异常类型不匹配

[4] 多重catch
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = 0;
int num2 = 0;
try {
num1 = sc.nextInt();
System.out.println("请输入第二个数:");
num2 = sc.nextInt();
int r = num1 / num2;
System.out.println("num1/num2 = " + r);
}catch (ArithmeticException e) {
System.out.println("数学计算异常:"+e.getMessage());
}catch(InputMismatchException e) {
System.out.println("输入不匹配异常:"+e.getMessage());
}catch (Exception e) {
System.out.println("发送异常:"+e.getMessage());
}
System.out.println("程序正常结束");
}
}
5.try/catch/finally
把有可能产生异常的代码放到try中,catch负责匹配并处理异常,finally块用于进行收尾工作(关闭数据库、关闭文件、释放内存等资源),不管是否发生异常,finally都执行。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1 = 0;
int num2 = 0;
try {
num1 = sc.nextInt();
System.out.println("请输入第二个数:");
num2 = sc.nextInt();
int r = num1 / num2;
System.out.println("num1/num2 = " + r);
} catch (Exception e) {
System.out.println("程序出现异常");
} finally {
System.out.println("不管是否出现异常,finally都执行");
}
System.out.println("程序正常结束");
}
6.异常的分类
Exception 根据是否处理分为两种情况。
RuntimeException:运行时异常。不要求程序必须做出处理。是所有运行时异常的父类。
CheckedException:检查时异常。要求程序必须处理,不处理编译不通过。
7.声明异常(throws关键字)
当一个方法可能存在异常,而此时自身又无法更好的处理,可以交给外界处理。此时用throws声明并抛出异常。
如果调用处也不知道如何处理异常,可选择继续声明异常,我们把这个过程称为异常上抛。
public class Test01 {
public static int div(int a, int b) throws ArithmeticException{
int r = 0;
r = a / b;
return r;
}
public static void main(String[] args) {
try {
Test01.div(10, 0);
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
}
}
}
8.手动抛出异常(throw关键字)
除了系统自动抛出异常外,有些问题需要开发者手动抛出异常,使用关键字throw。
package cn.sxt02.exception06;
public class Student {
private String name;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) throws Exception{
if(gender.equals("男") || gender.equals("女")) {
this.gender = gender;
}else {
throw new Exception("性别不合法!");
}
}
public Student(String name, String gender) {
super();
this.name = name;
this.gender = gender;
}
public Student() {
super();
}
}
public class Test01 {
public static void main(String[] args){
Student stu = new Student();
stu.setName("二狗");
try {
stu.setGender("xxx");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
9.自定义异常
如果开发者需要手动抛出的异常在系统不存在,可以自定义异常。
如果要自定义异常,首先要确定异常类型,如果异常是运行时异常,必须继承RuntimeException或其子类;如果异常是检查时异常,必须继承Exception或其子类。
异常的命名方式,参考系统命名方式,以Exception结尾。
public class AgeException extends Exception{
public AgeException() {
super();
}
public AgeException(String message) {
super(message);
}
}
Java基础--异常处理的更多相关文章
- Java基础—异常处理总结
异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地 ...
- 十二、Java基础---------异常处理机制
异常 异常 异常就是程序在运行时产生的异常情况. 异常的由来 问题也是现实生活中的具体事物,也可以通过java 类的形式进行描述,并封装成对象.异常就是java 对不正常情况进行描述后的对象的体现. ...
- Java基础——异常处理
异常的层次结构 所有的异常类都是 java.lang.Exception 类的子类型.异常类都是 Throwable 类的子类.除了异常类 Error 类也是由 Throwable 类产生的的子类1. ...
- java基础—异常处理
一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.
- Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws
笔记: /** 异常处理机制: 抓抛模型 * 1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径! * 2."抓", 抓住异常 ...
- Java 基础-异常处理
在 Java 中声明了很多异常类,每个异常类都表示一种运行错误.程序运行过程中发生一个可识别的运行错误时(可以找到与错误匹配的异常类,例如被除数为 0 时会触发 java.lang.Arithmeti ...
- java基础异常处理
异常的定义:中断了正常指令流的事件. try..catch..finally结构: class Test{ public static void main(String[] args){ System ...
- Java基础(四)-异常处理机制及其设计
本篇主要是记录自己所理解的Java异常处理机制(基于jdk1.7)以及怎么去处理和设计异常.还记得当初学习Java异常这块的时候都没怎么注意它的用途,以为就是简单的处理下异常,我避免程序出现这样错误就 ...
- Java基础学习之异常处理(6)
@ 目录 1.异常是什么 1.1.Error 1.2.Exception 2.异常处理机制 2.1.捕获异常 2.2.抛出异常 3.自定义异常 3.1.自定义检查性异常 3.2.自定义运行时异常 1. ...
随机推荐
- 【升鲜宝】生鲜配送管理系统_升鲜宝 V2.0 按客户商品分类分开打印配送与按客户商品分类导出相关订单商品相关说明(一)
[升鲜宝]生鲜配送管理系统_升鲜宝 V2.0 按[客户]的商品分类分开打印(配送单)与按[客户]商品分类[对账单]导出相关销售订单商品功能相关说明(一) 业务场景概述与痛点 1.中小学校食堂的客户,每 ...
- 用Python写一个贪吃蛇
最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法. 由于Python监听键盘很麻烦,没有C语言的kbhit(),所以这 ...
- findlibrary returned null
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10181330.html 该错误是在加载so库的时候出现的,就是找不到so库. 一.检查jinLibs目录 ...
- Git - git tag - 查看当前分支 tag 版本&说明
索引: 目录索引 参看代码 GitHub: git.txt 一.示例: git tag -l -n 二.说明: 1."tag" 部分 tag 代表的是标签动作,可以带参数 ,也可以 ...
- JS直接调用C#后台方法(ajax调用)
1. 先手动引用DLL或者通过NuGet查找引用,这里提供一个AjaxPro.2.dll的下载: 2. 之后的的过程不想写了,网上都大同小异的,直接参考以前大佬写的: AjaxPro2完整入门教程 总 ...
- SQLServer之创建提交读
事务提交读注意事项 语法:set transaction isolation level read committed. 数据库默认的是两个会话事务之间是提交读. READ COMMITTED指定语句 ...
- Parameter 'ids' not found. Available parameters are [array]
传的参数是一个数组, Long[] ids 后台错误写法 <delete id="deleteById"> delete from table where id in ...
- Andriod studio 打包aar
因为项目不同,有些公用库而且还是c++的,还有一些带资源的,简单的复制遇到库升级又是一轮配置,编译成aar则解决这些麻烦. 但是默认andriod studio的make moudle只生成debug ...
- Python开发 文件操作
阅读目录 1.读写文件 open()将会返回一个file对象,基本语法: open(filename,mode) filename:是一个包含了访问的文件名称的路径字符串 mode:决定了打开文件的模 ...
- JavaScript match()方法和正则表达式match()
先介绍参数为普通字符串的使用方式,此时match方法的返回值是存放首次匹配内容的数组.如果没有找到匹配结果,返回null.语法结构: 1 str.match(searchvalue)参数解析:(1). ...