Java学习记录9

异常:Java 异常是Java提供的用于处理程序中错误的一种机制

1.语法错误

2.运行时错误:系统错误:不可捕获Error

          数据运算错误:可捕获Exception

 

java.lang.NullPointerException空指针null

java.lang.NumberFormatException数据格式化错误

java.lang.ArrayIndexOutOfBoundsException数组越界错误

java.lang.ClassCastException类的类型转换错误

java.lang.ClassNotFoundException

java.lang.NoClassDefFoundError

java.lang.NoSuchMethodError

java.lang.ArithmeticException不能被0整除

java.lang.OutOfMemoryError内存溢出错误

 

 

try代码段包含可能产生例外的代码。

try 代码段后跟有一个或多个 catch 代码段。

每个catch代码段声明其能处理的一种特定类型的异常并提供处理的方法。

当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应的catch代码段。

finally段的代码无论是否发生异常都有执行。

 

 

 

 

package test;

 

public class Test {

public static void main(String[] args){

//String s=null;

//s.toString();//java.lang.NullPointerException

//Integer.parseInt("12a");

//Integer.parseInt(null);//java.lang.NumberFormatException

//String[] s={"12","123","45"};

//s[4]="7";//java.lang.ArrayIndexOutOfBoundsException

//String s=new String("ll");

//Object obj=s;

//Test t=(Test)obj;//java.lang.ClassCastException

//new Dog();//java.lang.NoClassDefFoundError   Dog类中无main方法时删除Dog.class报错

//java.lang.NoClassDefFoundError 建Dog类,删除Dog.class,new Dog(); 报错

//System.out.println(7/0);//java.lang.ArithmeticException

//new Dog().method("123");

try{

//String s=null;

//s.toString();

try{ //嵌套异常

byte[] b=new byte[1024*1024*200];

}catch(OutOfMemoryError e){

System.out.println("out of memory!");

}

try{

String[] s={"12","123","45"};

s[4]="7";

}catch(NullPointerException e){

System.out.println("Null Error!");

}System.out.println(1/0);

}catch(ArrayIndexOutOfBoundsException e){ //类型陷阱

System.out.println("NotError!");

}catch(NullPointerException e){

System.out.println("Null Error!");

}catch(ArithmeticException e){

System.out.println("by 0 Error!");

}catch(RuntimeException e){

System.out.println("Runtime!");

}catch(Exception e){ //通用异常陷阱

System.out.println("Error!");

}finally{ //最后执行块

System.out.println("stop");

}

}

}

 

 

package test;

 

public class Test1 {

 

 

private String name;

 

public void setName(String name) throws RuntimeException {

 

if (name.length() <= 0 || name.length() >= 4) {

throw new RuntimeException();

}

 

this.name = name;

 

}

 

public static void main(String[] args) {

 

try {

 

new Test1().setName("1234");

catch (Exception e) {

System.out.println("名字长度超出或者是过短");

}

 

// try {

//

// NullPointerException n = new NullPointerException();

//

// // Integer.parseInt(s);

//

// throw n; // throw 抛错...Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出(throw)异常。

//

// } catch (Exception e) {

// // TODO: handle exception

// System.out.println("aaa");

// }

}

 

}

 

getMessage();//得到异常信息

printStackTrace();//打印异常

package test;

 

public class Test2 {

public static void main(String[] args)throws ArrayIndexOutOfBoundsException{

try{

String[] s={"1","2","3","4"};

s[4]="45";

}catch(Exception e){

e.getMessage(); //得到异常信息

e.printStackTrace(System.out);

e.printStackTrace(); //打印

}

}

}

package test;

 

public class Test3 {

public void method()throws NullPointerException{

System.out.println(1/0);//java.lang.ArithmeticException

}

public static void main(String[] args){

new Test3().method();

/*try{

new Test3().method();

}catch(Exception e){

//e.getMessage();

//e.printStackTrace();

}*/

System.out.println("Hello!");

}

}

 

自定义异常

1.使用自定义异常一般有如下步骤:

2.通过继承 java.lang.Exception 类声明自己的异常类。

3.在方法适当的位置 生成自定义异常的实例,并用throw 语句抛出。

4.在方法的声明部分用throws 语句声明该方法可能抛出的异常。

 

 

package test;

 

public class Test4 {

private String name;

public void setName(String s)throws NameLengthException{

if(s.length()<=0||s.length()>=4){

throw new NameLengthException("error!");

}

this.name=s;

}

public static void main(String[] args){

try{

new Test4().setName("12345");

}catch(NameLengthException e){

System.out.println("");

}

}

}

package test;

 

public class NameLengthException extends RuntimeException {

NameLengthException(String s){

super(s);

}

}

 

例题

 

package test;

 

public class Test5 {

public static void method1()throws NullPointerException{

try{

System.out.println("1");

throw new NullPointerException();

}finally{

System.out.println("2");

}

}

public static void method2()throws NullPointerException{

System.out.println("3");

method1();

System.out.println("4");

}

//public void method3()throws NullPointerException{

public static void method3()throws NullPointerException{

try{

System.out.println("5");

method2();

}catch(NullPointerException e){

System.out.println("6");

throw e;

}finally{

System.out.println("7");

}

}

public static void main(String[] args){

//new Test5().method3();

method3();

}

}

 

 

数据封装:

package test;

 

public class Test6 {

public static void main(String[] args){

Integer i=100;//jdk1.5及以上允许

Integer a=new Integer(12);

System.out.println(a);

System.out.println(Integer.MAX_VALUE);

System.out.println(Integer.SIZE);

System.out.println(Integer.bitCount(5));

System.out.println(Integer.parseInt("12"));

System.out.println(Integer.parseInt("123a", 16));

System.out.println(Character.MAX_HIGH_SURROGATE);

System.out.println(Integer.toBinaryString(12));//二进制转换

System.out.println(Integer.toHexString(45));//十六进制转换

System.out.println(Integer.toOctalString(457987));//八进制转换

System.out.println(Double.NaN);

System.out.println(Double.POSITIVE_INFINITY);

Double d=new Double(1.2/0.2);

System.out.println(d);

}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值