异常机制

异常机制

  1. 常见的异常
    1 空指针异常
    2 下标越界
    3 类型转换异常
    4 栈内存溢出

  2. 异常的概述
    一种识别及响应错误情况的一致性机制。
    有效地异常处理能使程序更加健壮、易于调试。
    发生异常的原因: 1)用户输入了非法数据
    2)要打开的文件不存在
    3)网络通信时连接中断
    4)JVM内存溢出
    5)这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。

  3. 异常机制
    异常就是错误的另一种说法,
    在java中有一个专门模拟所有异常和错误的类(Throwable),所有的异常类都必须继承这个类

异常是我们程序员在写程序的时候,对某些高风险代码的操作规定了一个提醒机制,对于系统来说 就是处理异常的触发机制

异常机制的处理形式
try…catch… : 解决异常,一般用在客户端
throws : 抛出异常,一般用在类库端(服务端)
throw : 制造异常,异常源点,创建一个异常对象
用if…else…进行判断,也可以把大多数错误屏蔽掉,但是只能处理我们预知的情况,对于无法预知的情况,就需要使用try…catch…解决了

不同异常机制的选择
	有些错误我们不想处理,或者没有办法处理,或者不知道应该怎么处理(通常是类库端),一般使用throws把问题抛给调用处
在一个就是知道怎么处理,直接使用try...catch...处理问题即可,一般是main方法
	
finally语句块
	必须执行的语句块

异常机制的继承体系
	最大的异常类是 Throwable
	直接两个子类 : Error(我们解决不了,比如栈溢出)和  Exception(所有的子类除了一个RunTimeException之外,其他全是编译时异常)

	throws: 并不会把异常处理,仅仅提醒此处可能存在异常;

如果你调用的地方,通过throws提醒了你;
要么你也提醒调用你的地方;要么你用try处理掉
	
	throws 也可与同时抛出多个异常,用逗号隔开;
	因为 throws 只是一个提醒,不考虑顺序和继承关系;
  1. 异常继承体系

    由继承可知:
    所以子类方法中抛出的异常,必须是父类方法抛出的异常类,或者是其子类;

    子类覆写后的异常 <= 父类的异常

  2. Date
    表示特定的瞬间,精确到毫秒

1.1 构造方法
2. Date():使用无参构造器创建的对象可以获取本地当前时间。
3. Date(long date)
1.2常用方法
getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
表示的毫秒数。
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。
其它很多方法都过时了
1.3 SimpleDateFormat
2. Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat
3. 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
4. 它允许进行格式化:日期à文本、解析:文本à日期
5.
6. SimpleDateFormat() :默认的模式和语言环境创建对象
7. public SimpleDateFormat(String pattern):该构造方法可以用参数pattern
8. 指定的格式创建一个对象,该对象调用:
9. public String format(Date date):方法格式化时间对象date
10.
11. public Date parse(String source):从给定字符串的开始解析文本,以生成
12. 一个日期。

2.Calendar
1、Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
2、获取Calendar实例的方法
使用Calendar.getInstance()方法
调用它的子类GregorianCalendar的构造器。
3、一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想 要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
public void set(int field,int value)
public void add(int field,int amount)
public final Date getTime()
public final void setTime(Date date)
4、注意:
获取月份时:一月是0,二月是1,以此类推,12月是11
获取星期时:周日是1,周二是2 , 。。。。周六是7
3. 扩展之Enum
枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看什么是枚举?如何定义枚举?

//枚举类型,使用关键字enum
enum Day {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

相当简洁,在定义枚举类型时我们使用的关键字是enum,与class关键字类似,只不过前者是定义枚举类型,后者是定义类类型。枚举类型Day中分别定义了从周一到周日的值,这里要注意,值一般是大写的字母,多个值之间以逗号分隔。同时我们应该知道的是枚举类型可以像类(class)类型一样,定义为一个单独的文件,当然也可以定义在其他类内部,更重要的是枚举常量在类型安全性和便捷性都很有保证,如果出现类型问题编译器也会提示我们改进,但务必记住枚举表示的类型其取值是必须有限的,也就是说每个值都是可以枚举出来的,比如上述描述的一周共有七天
4. 扩展之Random
随机数生成器 从0开始,具体见代码
5. Math
提供科学计算和基本的数字操作方法
常用的方法都是静态的,直接类名调用即可,Math是在java.lang.Math 所以使用不需要导包
6. BigDecimal和BigInteger

  1. BigInteger
    1、Integer类作为int的包装类,能存储的最大整型值为2^31-1,Long类也是有限的, 最大为2^63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行运算了。

2、java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供
所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
2. BigDecimal
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中, 要求数字精度比较高,故用到java.math.BigDecimal类。
BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值