异常介绍
异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两个直接的子类。
异常理解
对于异常是java提供的一直特殊机制,目的是为了程序员更好的对程序进行优化,而在异常的实际开发时,对于新手来说又非常有难度,对于深层次的异常类之间的关系需要在开发中不断的了解
异常的处理方法在代码中都有介绍
package Absttact.com.java.Exception; import java.io.FileInputStream; import java.io.FileNotFoundException; public class Exceptiontest05 { public static void main(String [] agrs) { m1(); } public static void m1() { System.out.println("m1 bagin"); try { m2(); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 System.out.println("Not Found this text"); } System.out.println("m1 end"); } public static void m2() throws FileNotFoundException { System.out.println("m2 bagin"); m3(); //m3()方法将FileNotFoundException错误抛出 //m2()方法的调用者将FileNotFoundException错误处理和抛出系统才不会报错 System.out.println("m2 end"); } public static void m3() throws FileNotFoundException { new FileInputStream("D:\学习笔记\java\ws.txt"); } }
异常的自定义
package Absttact.com.java.Exception; //自定义异常 //在实际开发中有很多sun公司没有提供的异常 public class Exceptiontest11 { public static void main(String [] agrs) { //异常的使用 Myexceptiontest sc= new Myexceptiontest("用户名不可以是空"); //打印异常信息 sc.printStackTrace(); MyException sd =new MyException("登录密码或密码格式错误"); sd.printStackTrace(); } } //异常自定义 //第一步创建一个类继承Exception或者RuntimeException //第二步提供两个构造方法,一个有参一个无参 class Myexceptiontest extends Exception { //编译是异常 Myexceptiontest (){ } Myexceptiontest ( String obj){ super(obj); } } class MyException extends RuntimeException { //运行是异常 MyException(){ } MyException(String s){ super(s); } }
异常的练习使用
package 数组与数据结构; import java.util.Scanner; //一维数组模拟栈结构 public class Mystack { // 创建一维数组 // Object可以存放任何数据类型的数据 private Object[] array; //栈顶,初始值为0 private int index=0; public Object[] getArray() { return array; } public void setArray(Object[] array) { this.array = array; } //利用构造函数初始化对象 public Mystack( ) { //默认输入10 System.out.println("输入数组初始化长度:"); Scanner sc= new Scanner(System.in); int a= sc.nextInt(); this.array=new Object[a]; System.out.println("输入数组初始化成功:"); } //压栈 public void push(Object obj) throws MystackOperationException { if(this.index>=this.array.length) { throw new MystackOperationException("栈满,压栈失败"); } this.array[index]=obj; System.out.println("压栈成功!栈顶指向"+this.index); this.index ++; } //出站 public void pop( Object obj) throws MystackOperationException { if(this.index<=0) { throw new MystackOperationException("栈空,出栈失败"); } this.index --; System.out.println("出栈成功!栈顶指向"+this.index +"栈元素是"+this.array[index]); this.array[index]=obj; } public static void main(String [] agrs) { Mystack a= new Mystack(); try { a.push(new Object()); a.push(new Object()); a.push(new Object()); a.push(new Object()); a.push(new Object()); } catch (MystackOperationException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } try { a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); a.pop(new Object()); } catch (MystackOperationException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } class MystackOperationException extends Exception{ MystackOperationException(){ } MystackOperationException( String s){ super(s); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)