Java的常见异常
//注意方法是通过对象调用
异常分为两种:
1,越界异常
2,空指针异常
- 越界异常
int[]sz=new int[10];
syso.sz[10]
2,空指针异常
list<String> list=new ArrayList<string>()
list.get(0);
try
{
Student s = null;
System.out.println(s.name);
int[] sz = new int[10];
System.out.println(sz[10]);
int i = 0;
System.out.println(10/i);
}
catch(Exception e)
{
e.printStackTrace();
//throw new Exception();
}
java.lang.NullPointerException
Student s = null;
System.out.println(s.name);
JFrame jf = null;
System.out.println(jf.EXIT_ON_CLOSE);
算数错误
int i=0;
syso.10/i;
转换格式异常
string s=”a”;
s=(int) a;//这里强调的是string类型的a不可以转化为int型,但是,如果是string类型的11(类似这种就可以转化为int型)
异常就是代码运行时出现的错误,不是编译时期,即出现的时期是Java时期不是javac时期。
发生异常时虚拟机会封装对象;
发生异常时会一直报异常情况,一直到main函数才会发生中断,不然一直抛出异常;
处理方法:
try
{
}
catch(NumberFormatException ne)
{
ne.printStackTrace();处理异常
System.out.println(“传入的不是参数”);
}
Finally
{
}//异常处理的统一出口
异常分类
Throwable:所有异常父类,分为error和exception
Error:系统内部异常,无法处理
Exception:捕捉并且处理
Exception分为RuntimeException(常常发生的)和非运行异常
自定义异常:
业务异常时Java虚拟机抛不出来异常
抽象类才能继承,继承类抽象方法,但是如果不设置为抽象的可以设置成报异常,只要不继承就有异常
1, 声明方法会抛异常,
2, 用try{}catch{}
public static int calcPlus(String s1 ,String s2)
{
try {
int parseInt1 = Integer.parseInt(s1);
int parseInt2 = Integer.parseInt(s2);
System.out.println("try");
return parseInt1 + parseInt2;
} catch (Exception e) {
}
finally
{
System.out.println("finally");
}
return -1;
“`
3, 调用别人的接口最好try{}catch{}
public class Son extends AbstractFather{
}
Getmessage方法:构造出来显示异常信息的
public class LoginException extends RuntimeException {
String username;String password;
public LoginException(String username,String password)
{
this.username = username;
this.password = password;
}
public String getMessage() {
String s = "a" + "b";
//String
//StringBuffer--StringBuild
//HashMap -- HashTable
//ArrayList -- Vector
//
StringBuffer sb = new StringBuffer();
sb.append("用户名,密码不一致");
sb.append("用户名是");
sb.append(username);
sb.append("密码是");
sb.append(password);
return sb.toString();
}
}
Throw和throws区别:前者是指函数每部抛异常,后者是在函数名上声明要抛异常。