复习java基础第二天(异常处理)
一、常见的异常类型:
public class TestException { public static void main(String[] args) { int i = 10;
//数学异常: java.lang.ArithmeticException
int j = i / 0;
System.out.println(j); int [] scores = new int[]{1, 2, 4, 5};
//数组下标越界异常: java.lang.ArrayIndexOutOfBoundsException
System.out.println(scores[4]); Person p1 = new Man();
//类型转换异常: java.lang.ClassCastException
Woman p2 = (Woman) p1; p1 = null;
//空指针异常: java.lang.NullPointerException
System.out.println(p1.toString()); System.out.println("end...");
}
} class Person{ } class Man extends Person{ } class Woman extends Person{ }
二、不论在try、catch代码块中是否发生了异常事件,finally块中的语句都会被执行。
import java.io.FileNotFoundException;
import java.io.InputStream; public class TestTryCatchFinally { public static void main(String[] args) { try {
int i = 10;
int j = i / 0;
} finally{
System.out.println("finally...");
} //不论在try、catch代码块中是否发生了异常事件,finally块中的语句都会被执行。
System.out.println("end..."); //示例编译时异常, IO 异常属于编译时异常.
try {
InputStream is = new FileInputStream("abc.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
三、throws:
1. 在 Java 中使用 throws 关键字声明抛出异常.
2. throws 方法抛出的异常可以是方法中出现的异常的类型或其父类类型.
3. throws 可以声明抛出多个异常, 多个异常使用 , 分割.
4. 运行时异常不需要使用 throws 关键字进行显式的抛出.
5. 重写方法不能抛出比被重写方法范围更大的异常类型.
import java.io.FileNotFoundException;
import java.io.IOException; public class TestThrows { public static void main(String[] args) {
try {
test();
} catch (Exception e) {
e.printStackTrace();
}
} public static void test(){ int i = 10 / 0;
System.out.println(i); // InputStream fs = new FileInputStream("abc.txt"); // Connection connection = null;
// String sql = null;
// PreparedStatement ps = connection.prepareStatement(sql); // byte [] buffer = new byte[fs.available()];
// fs.read(buffer); A a = new B();
try {
a.method();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
} class A{
void method () throws FileNotFoundException{
}
} class B extends A{
// @Override
// void method() throws IOException {
// }
}
四:throw:
人工手动抛出异常:
1. 创建一个异常类对象
2. 在方法内部使用 throw 关键字把该异常类对象抛出去!
自定义的异常类:
1. 通常继承自 RuntimeException(可以继承 Exception)
2. 自定义的异常类就是用来被人工抛出的!
import java.util.Scanner; public class TestThrow { public static void main(String[] args) {
try {
inputAge();
} catch (Exception e) {
System.out.println(e.getMessage());
}
System.out.println("end...");
} /**
* 输入年纪: 要求年纪必须在 15-30 之间, 超出 30 则年纪偏大
*/
public static void inputAge(){
Scanner sc = new Scanner(System.in);
System.out.print("age=");
int age = sc.nextInt(); if(age > 30){
// System.out.println("年纪偏大.");
throw new AgeTooLargeException("年纪偏大.");
}
} public static void test(){ //1. 创建一个异常类对象
RuntimeException ex = new RuntimeException(); //2. 把异常类对象抛出去
throw ex;
}
}
五、自定义异常举例:
1、先定义一个异常类:
public class EcDef extends RuntimeException{ public EcDef() {
// TODO Auto-generated constructor stub
} public EcDef(String msg) {
super(msg);
} }
2、再创建一个处理异常的类:
public class EcmDef { public static void main(String[] args) { try {
int i = Integer.parseInt(args[0]); // "a"
int j = Integer.parseInt(args[1]); System.out.println(ecm(i, j));
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("输入的参数个数不足.");
} catch (ArithmeticException e) {
System.out.println("除数不能为 0");
} catch (EcDef e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println("输入的参数不能转为整型.");
}
} public static int ecm(int i, int j){ if(i < 0 || j < 0){
throw new EcDef("不能处理负数. ");
} int result = i / j;
return result;
}
}
复习java基础第二天(异常处理)的更多相关文章
- JAVA面试精选【Java基础第二部分】
上一篇,我们给出了大概35个题目,都是基础知识,有童鞋反映题目过时了,其实不然,这些是基础中的基础,但是也是必不可少的,面试题目中还是有一些基础题目的,我们本着先易后难的原则,逐渐给出不同级别的题目, ...
- java基础系列--Exception异常处理
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7191280.html 1.概述 Java代码中的异常处理是非常重要的一环,从代码中可以看到 ...
- JAVA基础第二章-java三大特性:封装、继承、多态
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java基础__Java中异常处理那些事
一.Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Thro ...
- java基础学习总结——异常处理
一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.
- java基础第二篇
3.选择结构 a.if: 格式一: if(表达式1){ 表达式1为真才执行 } 格式二: if(表达式1){ 表达式1为真才执行 }else{ 表达式1位假才执行 } 格式三:判断工龄的范围,判断成绩 ...
- Java基础(七)--Exception异常处理
发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...
- 复习java基础第三天(集合:Collection、Set、HashSet、LinkedHashSet、TreeSet)
一.Collection常用的方法: Java 集合可分为 Set.List 和 Map 三种体系: Set:无序.不可重复的集合. List:有序,可重复的集合. Map:具有映射关系的集合. Co ...
- Java基础学习(七) - 异常处理
1.异常概念 异常指的是程序在执行过程中出现的非正常的情况,导致JVM的非正常停止.在Java中,异常是一个类,产生异常就是创建异常对象并抛出一个异常对象. 异常指的并不是语法错误,语法错误,编译不会 ...
随机推荐
- WPF Style设置和模板化Template
WPF样式设置和模板化是一套功能(样式,模板,触发器和演示图版),可以为产品设置统一外观.类似于html的css,可以快速的设置一系列属性值到控件. 案例:ButtonStyle 这里创建了一个目标类 ...
- vue轮播插件vue-awesome-swiper
https://surmon-china.github.io/vue-awesome-swiper/ 第一步安装 npm install vue-awesome-swiper --save 第二部在m ...
- vue 实现点赞
在v-for循环里 <ul class="project_content"> <li v-for="(item, index) in items&quo ...
- 【Codeforces 1106B】Lunar New Year and Food Ordering
[链接] 我是链接,点我呀:) [题意] 给你n个菜以及每个人需要的菜以及数量 如果某个人无法满足它对菜的需求的话 就用价格比较低的菜来填充它的要求. (如果价格低的菜不够了,那么就直接输出0) 否则 ...
- 树屋阶梯(codevs 1741)
题目描述 Description 暑假期间,小龙报名了一个模拟野外生存作战训练班来锻炼体魄,训练的第一个晚上,教官就给他们出了个难题.由于地上露营湿气重,必须选择在高处的树屋露营.小龙分配的树屋建立在 ...
- hdu_1036_Average is not Fast Enough_201311021335
Average is not Fast Enough! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- PHP array_intersect_key()
定义和用法 array_intersect_key() 函数使用键名比较计算数组的交集. array_intersect_key() 返回一个数组,该数组包含了所有出现在被比较的数组中并同时出现在所有 ...
- java 效率编程 的一些小知识点
1.在程序中若出现字符串连接的情况.请使用StringBuffer取代String,这样能够降低多次创建String以及垃圾回收所带来的内存消耗 2.尽量使用局部变量. 调用方法时传递的參数以及调用中 ...
- tolua reference
Using Lua API and tag method facilities, tolua maps C/C++ constants, external variables, functions, ...
- ibatis 一对多查询
<typeAlias alias="businessScopeItem" type="com.sdfrdj.vo.BusinessScopeItem"/& ...