Ant Array Collection Cryptography Formal Specification Go Gradle Https JDBC JDK JVM Java License Markdown Maven MyBatis Quartz RSA Reading SHA Spring TLA+ ivy 最佳实践
2015-06-02

Java 异常踩坑总结与最佳实践

Java 编程时,总会遇到可预见或不可预知的异常情况,程序如何处理好这些异常是保证程序稳定健壮的无比重要。对于 Java,通过 Throwable 类的众多子类来描述程序遇到的各类异常,主要分为 ExceptionError

  • Error: 一般指虚拟机相关问题,如系统崩溃,内存不足,调用栈溢出等严重问题,需要程序终止解决。
  • Exception:程序可预测解决的异常,如访问异常文件导致的 IO 异常,或者用户自定义的异常,此类异常通过合理处理,可不造成程序中断,保障了程序健壮性。Exception 中最主要的,又分为:
    • 检查异常(checked exception):若抛出此异常,方法后必须强制以 throws 关键字进行抛出声明,例如 IOException
    • 非检查异常(unchecked exception):无需抛出声明,RuntimeException 均属于非检查异常,例如 NullPointerException, IndexOutOfBoundsException 等。

对于如何处理异常,Java 采用的方法就是 try...catch...finallytry 所括代码,称为监控区域(guarded region),该区域内所有代码抛出的异常,会被 catch 中匹配的 Exception 分支所捕获,此处父类可捕获子类异常,最后在 finally 中处理收尾。

try...catch...finally 本身不难理解,但原理上也有一些需要注意的地方,下文也总结了些使用技巧。



2015-05-17

JDK 容器深入解析

在 Java 编程中,常常需要一些数据结构用来保存我们所需要的数据。在 C /CPP 中,只提供数组和链表的实现,但诸如一些常用的稍复杂的数据结构,例如HeapStackQueueHash 表等,都需要自己编码实现,虽然灵活度很高,但在一些常用的结构上再浪费时间,就没有必要了。而 JDK ,则提供了一个不少实用的容器,供开发者使用,本文将详细解析一下 JDK 中提供的容器。



2015-05-11

Java 数组总结

Java 语言中提供的数组是用来存储固定大小的同类型元素,在 JVM 内存结构中,是一块逻辑连续的内存。可以声明一个数组变量,如 numbers[100] 来代替直接声明100个独立变量number0,number1,…,number99。

数组的标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个对象用以保存指向其他对象的引用。在上图中,为 myList 变量。
[] 语法是访问数组对象的唯一方式.

  • 优点
    • 效率最高的存储和随机访问对象引用序列的方式,这是数组仅存的优点。
  • 缺点
    • 数组对象大小固定,且在生命周期中不可改变



1%