12.--基本异常处理
来源:互联网 发布:mac视网膜高清壁纸 编辑:程序博客网 时间:2024/05/22 23:28
1、二维数组的创建
a、静态初始化
b、动态初始化
c、默认初始化
2、二维数组的赋值
a、二维数组的第一个方括号,标记第一维(即最外层)数组的元素。
b、二维数组的第二个方括号,标记第二维(即内层)数组的元素。
3、二维数组的访问
a、数组array[x][y]表示指定的是第x行第y列的值。 、
b、数组名后直接加上length(如array.length),所指的是有几行(Row)
c、指定索引后加上length(如array[0].length),指的是该行所拥有的元素,也就是列(Column)数目。
4、异常机制
a、异常及错误:
Throwable
Error
AWTError
IOError
LinkageError
ThreadDeath
Exception
SQLException
IOException
RuntimeException
IndexOutOfBoundsException
NullPointerException
ClassCastException
b、Throwable:
有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。
c、Error:
系统或虚拟机的异常,无法捕获。如:OutOfMemoryError
d、Exception:
程序本身可以处理的异常。
RuntimeException:JVM 常用操作引发的异常,如:NullPointerException
e、Checked:
在编译期间就可以发现的异常,必须在运行之前就进行处理的异常。
除了RuntimeException及其子类以外,
其他的Exception类及其子类都属于可查异常。
这种异常的特点是Java编译器会检查它,也就是说,
当程序中可能出现这类异常,要么用try-catch语句捕获它,
要么用throws子句声明抛出它,否则编译不会通过。
f、Unchecked:
包括运行时异常(RuntimeException与其子类)和错误(Error)。
g、运行时异常:
运行时异常的特点是Java编译器不会检查它,
也就是说,当程序中可能出现这类异常,
即使没有用try-catch语句捕获它,
也没有用throws子句声明抛出它,也会编译通过。
h、编译异常:
是RuntimeException以外的异常,
类型上都属于Exception类及其子类。
从程序语法角度讲是必须进行处理的异常,
如果不处理,程序就不能编译通过。
如IOException、SQLException等以及用户自定义的Exception异常,
一般情况下不自定义检查异常。
6、异常处理:
a、抛出异常:
一个方法出现错误引发异常时,
方法创建异常对象并交付运行时系统,
异常对象中包含了异常类型和异常出现时的程序状态等异常信息。
运行时系统负责寻找处置异常的代码并执行。
throws:如果一个方法可能会出现异常,但没有能力处理这种异常,
可以在方法声明处用throws子句来声明抛出异常。多个异常可使用逗号分割
throw:异常必须在方法内抛出。
b、捕获异常:
try...catch...finally...
Java规定:对于可查异常必须捕捉、或者声明抛出。允许忽略不可查的RuntimeException和Error。
try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
catch 块:用于处理try捕获到的异常。
finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。
当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。
在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。
getCause():返回抛出异常的原因。如果 cause 不存在或未知,则返回 null。
getMeage():返回异常的消息信息。
printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的值。
ClassCastException 类型转换异常类
ArrayStoreException 数组中包含不兼容的值抛出的异常
SQLException 操作数据库异常类
NoSuchFieldException 字段未找到异常
NoSuchMethodException 方法未找到抛出的异常
NumberFormatException 字符串转换为数字抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IllegalAccessException 不允许访问某类异常
InstantiationException 当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常
代码体现:
一个游戏:
1. 要举办一次活动,计划邀请300人,实际上场地只能够容纳100人,多余的人不能进入场地。
2.举行抽奖活动,100个人选一个。如果人数不够一百,照常进行。抽到的号码没有对应的人,表示没人中奖。
3.要随机一下,抽奖中奖的是男是女。
public class Aexception extends RuntimeException{public void overNum(){System.out.println("人数超过了!!!");}}
import java.util.ArrayList;public class People {ArrayList<People> list = new ArrayList<People>();int number;public void peopleNum() throws Aexception{RandomNumber randomNumber =new RandomNumber();randomNumber.randomanpeopleNum();for (int i = 0; i < randomNumber.getPeopleNumber(); i++) {list.add(new People(i+1));}if (list.size() > 100) {throw new Aexception();}}public void peopleRemove(ArrayList<People> list){for (int i = 0; i < list.size()-100; i++) {list.remove(i+100);}}public People(int number){this.number = number;}public People(){}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}}
public class RandomNumber {private int peopleNumber;public void randomanpeopleNum(){peopleNumber = (int)(Math.random()*300);}public int getPeopleNumber() {return peopleNumber;}public void setPeopleNumber(int peopleNumber) {this.peopleNumber = peopleNumber;}}
public class ExceptionDealTest {/** * @param args */public static void main(String[] args) {People people = new People();try {people.peopleNum();} catch (Aexception e) {e.overNum();while (people.list.size() > 100) {people.peopleRemove(people.list);}}//}catch (Exception e) {//e.getStackZdTrace();//}//选择中奖的人,并输出随机性别Random random = new Random();int sex = random.nextInt(2);String sexString = "";switch (sex) {case 0:sexString = "女";break;case 1:sexString = "男";break;default:break;}int temp = random.nextInt(100);if (temp > people.list.size()) {System.out.println("没人能中奖!!!");}else {System.out.println("中奖是:"+ people.list.get(temp).getNumber()+ " 性别:" +sexString);}}}
- 12.--基本异常处理
- 异常处理的基本过程
- 异常处理的基本过程
- C++异常处理基本思想
- php异常处理基本方法
- Java异常处理的基本封装
- WCF基本异常处理模式[上篇]
- WCF基本异常处理模式[中篇]
- WCF基本异常处理模式[下篇]
- ios报异常处理基本方法
- Python基本语法_异常处理详解
- JS基本变量与异常处理
- Oracle基本操作十:异常处理
- F#入门-附录5 基本异常与异常处理函数
- php异常处理—异常的基本用法
- pyhton---异常处理的终极语法、网页访问基本读取、网页访问异常处理
- dwr的基本使用,异常处理,和spring集成方法
- 关于object-c中的异常最基本的处理
- ajax 增加 删除Html元素
- JAVA——普通代码块、构造代码块、静态代码块
- QT程序打包成EXE
- 排序算法---3
- Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
- 12.--基本异常处理
- Metal 着色语言编程指南 五
- 13.——常用API
- Android API Guides---Input Controls
- 机器学习笔记02:多元线性回归、梯度下降和Normal equation
- 工程项目前出现红色感叹号原因
- 【matlab】:利用matlab实现QQ的一个图片显示变色功能
- SGU 141 Jumping Joe(扩展欧几里得)
- Linux 目录结构