1.java的异常分为Exception(异常)和Error(错误)两大类。Exception类解决由程序本身及环境所产生的异常,而Error类则处理较少发生的内部系统错误。Exception类异常可以被捕获并进行相应处理,不是错误,只是在反应不良情况。而对于Error类异常,程序员通常无能为力,只能在其发生时由用户按照系统提示关闭程序。
2.错误分为系统错误和应用程序错误。
系统错误有:CPU 硬盘 内存条
底层调用错误(开发时)
应用程序错误 语法错误 系统错误
类不存在
运行时错误
数据操作错误 传输错误
数据结构错误
3.异常处理的方式有两种:第一种方式是使用try…catch…finally结构对异常进行捕获和处理;第二种方式是通过throws和throw抛出异常。
4.try{
正常流程 //代码区
}catch(意外状况){
捕获区域
}catch(通用处理){ 用综合陷阱则要用陷阱的父类catch(Exception){ }
throw ex; 抛出错误
}fially{
}
5.不论前面对错,都要执行finally后面的语句。
6.Test t=null;
t toString(); //空指针异常
catch(NullPointException ex){
throw ex;
catch new NullPointException //重新创建异常对象
}
7. getMessage():String 得到错误的信息;
printStackTrace():void 打印竖状的异常报错信息;
Throwable(String) 构造器;
8.方法的调用成功或者失败不仅只用返回值表示,用异常来提示。
9.publicstatic void setAge(int age) throws Exception,ArroyIndexOutOfException
{
If(age>100 || age<0 ){
Throw newexception(“aaa”);
}finally{
赋值语句
}
}
public static void main(String[] s){
try{
setAge(10);
System.out.println(“成功”);
}catch(Exception e){
System.out.println(“失败”);
}
}
异常就是另一种代码和结构。在方法里抛出异常,在try里只写正确的代码,正确的思路,正确的过程,将错误写在catch里。
10.2自定义异常
1.public classAs {
public static void regUser(String username,String password)
throwsUserRegErrorException {
if (username.length() <= 3 ||password.length() <= 3) {
throw new UserRegErrorException("用户名或密码长度不够!");
}
System.out.println("注册成功!");
}
public static void mm(String username,String password)
throws UserRegErrorException {
regUser(username, password);
}
public static void main(String[] args) {
try {
mm("asssa","aa");
} catch (UserRegErrorException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println(e);
}
}
}
public classUserRegErrorException extends RuntimeException {
public UserRegErrorException() {
}
public UserRegErrorException(String message){
super(message);
}
public String toString() {
return "您传递的用户名或密码有问题,请重新传递!";
}
}
10.3包
1.创建类时带上包,包+类名是类的全名,访问用全名。package com;
2.以com开头的类是公司;以org开头的是社会组织
命名一般格式:com+公司名/协会+项目组+项目名称+模块
3.package a;
Class Test1{
Public void Test(){ }
}
Class Test2{
}
Package b;
import a.*;
class Test2{
Test1 t=new Test1();
a.Test2 t1=new Test2();
}
4.还可以引用a包下的方法,用import static a.Test1.*;
5.常见的几个包:
Java.nat :网络 Java.sql Java.swing :高级图形化
Java.io :输入输出 Java.awl
Java.util Java.ejb Java.applet :网页小程序
Java.text :文本处理 Java.rmi 远程方法调用
Javax.sql集合 Javax.xml Javax.servlet
Javax.imageio :图形处理 Javax.print :打印机 Javax.jws.soap :集成开发
Javax.sound :声音技术
Javax包是java的扩展和规范
6.class.forName(“类的全名”); 动态加载类
Try{
Class.forName(“A”); //动态加载
}catch (classNotFoundException e){
e.printStackTrace();
}