Java异常处理-----自行处理
自行处理
1.try{//可能发生异常的代码 }catch(异常类 变量名){//处理}。
2.案例除法运算的异常处理。
3.如果没有进行try catch处理,出现异常程序就停止。进行处理后,程序会继续执行。
class Demo {
public static void main(String[] args) {
div(2, 0);
System.out.println("over");
}
public static void div(int x, int y) {
try {
System.out.println(x / y); // 可能出现异常的语句,放入try中。
} catch (ArithmeticException e) { // 进行异常匹配,
//异常信息
System.out.println(e.toString());
System.out.println(e.getMessage());
e.printStackTrace();
System.out.println("除数不能为0");
}
System.out.println("除法运算");
}
}
多个异常
1.案例print方法,形参中增加数组。
2.在print方法中操作数组会发生新的异常ArrayIndexOutOfBoundsException,NullPointerException),如何处理?
1.使用将可能发生异常的代码放入try语句中,添加多个catch语句即可。
2.可以处理多种异常,但是同时只能处理一种异常。
3.try中除0异常和数组角标越界同时出现,只会处理一种。
public class Demo{
public static void main(String[] args) {
System.out.println();
int[] arr = { 1, 2 };
arr = null;
// print (1, 0, arr);
print (1, 2, arr);
System.out.println("over");
}
public static void print(int x, int y, int[] arr) {
try {
System.out.println(arr[1]);
System.out.println(x / y);
} catch (ArithmeticException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("算术异常。。。");
} catch (ArrayIndexOutOfBoundsException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("数组角标越界。。。");
} catch (NullPointerException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("空指针异常。。。");
}
System.out.println("函数执行完毕");
}
}
总结
1.程序中有多个语句可能发生异常,可以都放在try语句中。并匹配对个catch语句处理。
2.如果异常被catch匹配上,接着执行try{}catch(){} 后的语句。没有匹配上程序停止。
3.try中多个异常同时出现,只会处理第一条出现异常的一句,剩余的异常不再处理。
4.使用多态机制处理异常。1.程序中多态语句出现不同异常,出现了多个catch语句。简化处理(相当于急诊)。
2.使用多态,使用这些异常的父类进行接收。(父类引用接收子类对象)
public static void div(int x, int y, int[] arr, Father f) {
try {
System.out.println(arr[1]); // 数组越界
System.out.println(x / y); // 除零
Son s = (Son) f; // 类型转换
} catch (Exception e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("出错啦");
}
System.out.println("函数执行完毕");
}
多个catch语句之间的执行顺序。
1.是进行顺序执行,从上到下。
2.如果多个catch 内的异常有子父类关系。1.子类异常在上,父类在最下。编译通过运行没有问题
2.父类异常在上,子类在下,编译不通过。(因为父类可以将子类的异常处理,子类的catch处理不到)。
3.多个异常要按照子类和父类顺序进行catch
class Father {
}
class Son extends Father {
}
public class Demo8 {
public static void main(String[] args) {
System.out.println();
int[] arr = { 1, 2 };
arr = null;
Father f = new Father();
div(1, 0, arr, f);
System.out.println("over");
}
public static void div(int x, int y, int[] arr, Father f) {
try {
System.out.println(arr[1]);
System.out.println(x / y);
Son s = (Son) f;
} catch (ArithmeticException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("算术异常。。。");
} catch (ArrayIndexOutOfBoundsException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("数组角标越界。。。");
} catch (NullPointerException e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("空指针异常。。。");
} catch (Exception e) {
e.toString();
e.getMessage();
e.printStackTrace();
System.out.println("出错啦");
}
System.out.println("函数执行完毕");
}
}
总结
处理异常应该catch异常具体的子类,可以处理的更具体,不要为了简化代码使用异常的父类。
疑惑:感觉异常没有作用.
【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧(要先登录CSDN账号哦 )】
—–乐于分享,共同进步!
—–更多文章请看:http://blog.csdn.net/duruiqi_fx
Java异常处理-----自行处理的更多相关文章
- JAVA 异常处理机制
主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...
- Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...
- Java异常处理和设计【转】
Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...
- java 异常处理 Throwable Error 和Exception
Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是“意外.例外”的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误. 比如使用 ...
- Java 异常处理的优劣
Java编程中的异常处理是一个很常见的话题了,几乎任何一门介绍性的Java课程都会提到异常处理.不过,我认为很多人其实没有真正掌握正确处理异常情况的方法和策略,最多也就不过了解个大概,知道概念.我想对 ...
- Java异常处理的基础知识
Java中的异常捕获语句 Try{ //可能发生运行错误的代码: } catch(异常类型 异常对象引用){ //用于处理异常的代码 } finally{ //用于“善后” 的代码 } Java 中所 ...
- 札记:Java异常处理
异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...
- java异常处理(父子异常的处理)
我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么 ...
- Java 异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out ...
随机推荐
- Docker配置加速器
我们国内使用官方Docker Hub仓库实在是太慢了,很影响效率 使用命令编辑文件: vim /etc/docker/daemon.json 加入下面的数据: docker-cn镜像: { " ...
- Jenkins配置Gogs webhook插件
前言 我们在前面使用Jenkins集合Gogs来进行持续集成的时候,选择的是Jenkins定时检测git仓库是否有更新来决定是否构建.也就是说,我们提交了代码Jenkins并不会马上知道,那么我们可以 ...
- angular的时间指令 以及防止闪烁问题
1.点击事件 <!doctype html><html lang="en"><head> <meta charset="UTF- ...
- [LeetCode] Construct Binary Tree from String 从字符串创建二叉树
You need to construct a binary tree from a string consisting of parenthesis and integers. The whole ...
- python文件结构与import用法
首先上一张总结图: 在pycharm中,一般不会将当前文件目录自动加入自己的sourse_path.如果遇到无法import同级目录下的其他模块, 右键make_directory as-->S ...
- Mac 下升级 vim 并自己配置 vim 的过程
1.升级 vim 我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim -- ...
- [SDOI 2017]数字表格
Description 题库链接 记 \(f_i\) 为 \(fibonacci\) 数列的第 \(i\) 项. 求 \[\prod_{i=1}^n\prod_{j=1}^mf_{gcd(i,j)}\ ...
- 【BZOJ2186】【SDOI2008】沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁 ...
- 【luogu3174】【HAOI2009】毛毛虫
Description 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大. Input 在文本文件 worm.in 中第一行两个整数 N , M ,分 ...
- 51 nod 1421 最大MOD值
1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...