一、常见的异常类型:

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基础第二天(异常处理)的更多相关文章

  1. JAVA面试精选【Java基础第二部分】

    上一篇,我们给出了大概35个题目,都是基础知识,有童鞋反映题目过时了,其实不然,这些是基础中的基础,但是也是必不可少的,面试题目中还是有一些基础题目的,我们本着先易后难的原则,逐渐给出不同级别的题目, ...

  2. java基础系列--Exception异常处理

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7191280.html 1.概述 Java代码中的异常处理是非常重要的一环,从代码中可以看到 ...

  3. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  4. Java基础__Java中异常处理那些事

    一.Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Thro ...

  5. java基础学习总结——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  6. java基础第二篇

    3.选择结构 a.if: 格式一: if(表达式1){ 表达式1为真才执行 } 格式二: if(表达式1){ 表达式1为真才执行 }else{ 表达式1位假才执行 } 格式三:判断工龄的范围,判断成绩 ...

  7. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  8. 复习java基础第三天(集合:Collection、Set、HashSet、LinkedHashSet、TreeSet)

    一.Collection常用的方法: Java 集合可分为 Set.List 和 Map 三种体系: Set:无序.不可重复的集合. List:有序,可重复的集合. Map:具有映射关系的集合. Co ...

  9. Java基础学习(七) - 异常处理

    1.异常概念 异常指的是程序在执行过程中出现的非正常的情况,导致JVM的非正常停止.在Java中,异常是一个类,产生异常就是创建异常对象并抛出一个异常对象. 异常指的并不是语法错误,语法错误,编译不会 ...

随机推荐

  1. STM32窗口看门狗和独立看门狗的区别,看门狗介绍及代码演示

    一.介绍: STM32看门狗分为独立看门狗和窗口看门狗两种,其两者使用调条件如下所示, IWDG和WWDG两者特点如下图所示: 独立看门狗的手册资料: 窗口看门狗的手册资料:             ...

  2. JS判断浏览器类型和屏幕分辨率来调用不同的CSS样式

    代码如下: <!-- if (window.navigator.userAgent.indexOf("MSIE")>=1) { var IE1024="&qu ...

  3. Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现

    Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次 ...

  4. java 基础编程day1

    public class TextCharType{ public static void(Sting[] args){ char c1 = 'a'; char c2 = '了'; System.ou ...

  5. oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 本文出自[我是干勾鱼的博客] oracle中使用impdp数据泵导 ...

  6. TiDB(1): server測试安装

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50600352 未经博主同意不得转载. 博主地址是:http://blog.csd ...

  7. ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面

    俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴.我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍.那么一套MVC快速开发框架至少得具有哪些功能才能帮我们 ...

  8. Codeforces--630H--Benches(组合数)

    H - Benches Crawling in process... Crawling failed Time Limit:500MS     Memory Limit:65536KB     64b ...

  9. 实现泛型IEnumerable接口

    用C#实现一个类的IEnumerable接口时有两种方法:1)实现非泛型IEnumerable接口:2)实现泛型IEnumerable(T)接口.如果采用方法1,当集合元素T是值类型时,将涉及到巨多的 ...

  10. Android网络连接监听

    接收系统网络服务的广播接收者 public class NetStateReceiver extends BroadcastReceiver { private Handler handler; pu ...