一、常见的异常类型:

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. 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间:10min ~ 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下 ...

  2. 【Codeforces 466C】Number of Ways

    [链接] 我是链接,点我呀:) [题意] 让你把数组分成3个连续的部分 每个部分的和要一样 问你有多少种分法 [题解] 先处理出来num[i] 表示i..n这里面有多少个j 满足aft[j] = af ...

  3. 【1657: [蓝桥杯][算法训练VIP]】统计单词个数

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设dp[i][j]表示前i个字符分成j个部分的最多匹配单词个数. 则dp[i][j] = dp[prei][j-1] + get_num(pr ...

  4. prime算法邻接表写法

    #include <iostream> #include <queue> using namespace std; typedef struct { long v; long ...

  5. nyoj_655_光棍的yy_201311281539

    光棍的yy 时间限制:1000 ms  |           内存限制:65535 KB 难度:2   描述 yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊. 现在给 ...

  6. JQuery获取select选中值和清除选中状态(转)

    1.获取值 var provinceSearch = $("#loc_province_search").find("option:selected").att ...

  7. maven install:install出现的错误提示

    maven install:install出现的错误提示 [INFO] --- maven-install-plugin:2.4:install (default-cli) @ maven028 -- ...

  8. gradle配置国内的镜像

    gradle配置国内的镜像 学习了:http://blog.csdn.net/stdupanda/article/details/72724181 http://blog.csdn.net/lj402 ...

  9. [csdn markdown]使用摘记一源码高亮及图片上传和链接

    本文主要内容是体验csdn markdown的代码块高亮显示和图片链接及上传. 图片上传 上边这是标题行.仅仅须要使用一个#就能够表示.几个表示是几级标题 图片上传 本地图片上传控件 本地图片上传方式 ...

  10. MFC的UI更新机制和加速键的创建

    近期在看<MFC Windows程序设计>这本书,正好看到更新菜单中的菜单项和加入菜单项的加速键这方面的内容,下面总一下总结. MFC提供的更新菜单项的机制例如以下: 通过消息映射表中的O ...