您的位置:首页 > 编程语言 > Java开发

day05--Java基础知识--Exception异常

2015-07-20 12:07 555 查看
package day05;

/*
* 异常:在程序运行时发生了不正常的情况,此时由系统中断程序的运行
*
* 异常类的由来:当程序发生不正常情况时,Java中提供一个类描述这个不正常情况的信息,
*   包含异常信息、异常类名、异常的位置
*
*异常分类:
*  Error 错误:   由系统原因造成,一般是系统资源分配冲突时或系统崩溃等原因
*              这一类Error错误,对于程序员来说是无法处理的
*
*  Exception:  由于程序原因造成的,一般是运算、I/O读取等原因
*              这一类Exception异常,可以进行处理
*
*  Java中异常类的体系:
*
*      Throwable
*          Error:
*          Exception:
*              RuntimeException:非受控异常(运行时异常)
*
*  在Java中如何处理异常
*
*      1.捕获异常处理
*          格式1:
*          try{
*              可能出现异常的语句;
*              }catch(异常类型 对象名){
*                  处理异常语句;
*              }
*/

public class Demo3 {
static int divide(int a, int b) {
int result = 0;
try {
result = a / b;
} catch (ArithmeticException e) {
e.printStackTrace();
System.out.println("除数为0了!");
}
System.out.println("计算结果完成...");
return result;// 当此处出现异常时,会抛给调用者(main方法)
}

public static void main(String[] args) {
// 从命令行中读取运行此程序的两个参数
String aStr = args[0];
String bStr = args[1];

// 将数字字符串转成数值类型
int a = Integer.parseInt(aStr);
int b = Integer.parseInt(bStr);

int r = divide(a, b);// 在运行时会发生ArithmeticException,则main抛给JVM
System.out.println(r);
}

}


package day05;

/*
* 异常:在程序运行时发生了不正常的情况,此时由系统中断程序的运行
*
* 异常类的由来:当程序发生不正常情况时,Java中提供一个类描述这个不正常情况的信息,
*   包含异常信息、异常类名、异常的位置
*
*异常分类:
*  Error 错误:   由系统原因造成,一般是系统资源分配冲突时或系统崩溃等原因
*              这一类Error错误,对于程序员来说是无法处理的
*
*  Exception:  由于程序原因造成的,一般是运算、I/O读取等原因
*              这一类Exception异常,可以进行处理
*
*  Java中异常类的体系:
*
*      Throwable
*          Error:
*          Exception:
*              RuntimeException:非受控异常(运行时异常)
*
*  在Java中如何处理异常
*
*      1.捕获异常处理
*          格式1:
*          try{
*              可能出现异常的语句;
*              }catch(异常类型 对象名){
*                  处理异常语句;
*              }
*      2.抛出异常
*      1)声明方法时抛出异常
*          方法名() throws 异常类名[,异常名,异常类名]{}
*      2)在方法中抛出异常
*/

public class Demo3 {
static int divide(int a, int b) throws ArithmeticException {
int result = 0;
result = a / b;// 当发生异常时,向调用者抛出异常

// 当异常抛出时,其下的语句不会被执行
System.out.println("计算结果完成...");
return result;// 当此处出现异常时,会抛给调用者(main方法)
}

public static void main(String[] args) {
// 从命令行中读取运行此程序的两个参数
String aStr = args[0];
String bStr = args[1];

// 将数字字符串转成数值类型
int a = Integer.parseInt(aStr);
int b = Integer.parseInt(bStr);
try {
int r = divide(a, b);// 在运行时会发生ArithmeticException,则main抛给JVM
System.out.println(r);
} catch (Exception e) {//可以处理所有异常,即Exception类是所有异常的父类
e.printStackTrace();
}

}

}


package day05;

/*
* 处理多个异常的格式:
*  try{
*  }catch(异常类名 对象名){
*  }catch(...){
*  }catch(...){
*  }
*
*  注意:处理多个异常类时,异常的子类所在的catch语句要放在最上面
*/

public class Demo5 {
static class Person {
String name;

public Person(String name) {
this.name = name;
}

public String toString() {
return "[name=" + name + "]";
}
}

static void sub(int a, int b, int[] nums, Person p) {

try {
int r = a / b;//此行如果出现了异常,则下行代码不会执行
r = nums[5] / 9;
System.out.println(p);
} catch (ArithmeticException e) {
System.out.println("除数为0了...");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组的索引值越界了...");
} catch (NullPointerException e) {
System.out.println("访问的对象是null");

}
}

public static void main(String[] args) {

int[] nums = { 9, 10, 8, 66, 22, 109 };
sub(10, 2, nums, new Person("张三"));

sub(10, 0, new int[3], null);
}

}


package day05;

import javax.management.RuntimeErrorException;

/*
* 抛出多个异常的格式:
*
*      在方法声明的后边,使用 throws异常类型列表  语句
*/

public class Demo6 {
static class Person {
String name;

public Person(String name) {
this.name = name;
}

public String toString() {
return "[name=" + name + "]";
}
}

// 抛出多个异常,抛给调用者处理
static void sub(int a, int b, int[] nums, Person p)
throws Ar
a6b8
ithmeticException, IndexOutOfBoundsException,
NullPointerException {

int r = a / b;// 此行如果出现了异常,则下行代码不会执行
r = nums[5] / 9;
System.out.println(p);
}

static void div(int a, int b) {
if (b == 0) {
// 抛出异常
throw new RuntimeException("除数为0");
}
}

public static void main(String[] args) {

int[] nums = { 9, 10, 8, 66, 22, 109 };
// sub(10, 2, nums, new Person("张三"));

try {
//sub(10, 4, new int[3], null);
div(9, 0);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组长度小于6");
} catch (IndexOutOfBoundsException e) {// 父类异常的处理放在子类异常处理的下面
System.out.println("索引值越界异常...");
} catch (Exception e) {// 异常类的父类所处的catch要放在最后
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: