throws

Java的异常处理机制

巧了我就是萌 提交于 2020-02-27 00:29:25
异常 异常指的是,程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 由图可知,异常的根类是throwable.其下有两个子类 Error :严重错误Error,无法通过处理的错误,只能事先避免。 Exception :由于使用不当导致,是可以避免的,异常产生后程序员可以通过代码的方式去纠正,使程序继续运行。 而我们平常所说的异常就是指Exception,而它分为;也分为两类: • 编译时期异常:在编译时期就会检查,如果没有处理异常,则编译失败。(如日期格式化类异常) • 运行时期异常:在运行期间,去检查异常,在编译时期,运行异常不会编译器检测(不报错,如数学异常) (一)异常产生过程的解析 下面的代码是一个简单的数组索引越界案例(运行时期异常,编译器不会提示错误) public static int getElement(int []arr,int index){ int ele = arr[index]; return ele; } 已知传来的数组使{1,2,3},索引是3,这是时候JVM就会检测程序出现异常 JVM会做两件事: 1.JVM会根据异常产生的原因创建一个异常的对象,这个异常的对象包含了异常产生的( 内容 , 原因 , 位置 )。 会 new ArrayIndexOutBoundsException("3") ; 2

深入理解NIO(三)

浪尽此生 提交于 2020-02-25 02:11:15
欢迎回到淦™的源码看爆系列 在看完前面两个系列之后,相信大家对NIO也有了一定的理解,接下来我们就来深入源码去解读它,我这里的是OpenJDK-8u60版本,建议大家也下一份放ide里和我一起看会比较好理解。(这里主要介绍Selector,Buffer第一篇有提到一点,Channel也不过是些Buffer的操作方法而已,这里就不提及了,大家感兴趣可以自己去看) open() // 1. 创建Selector Selector selector = Selector.open(); 首先我们来分析open方法: // Selector public static Selector open() throws IOException { // 这里的静态方法provider会使用DefaultSelectorProvider.create();方法根据系统选择一个SelectorProvider // windows平台的话是WindowsSelectorProvider, // Linux平台是一个EPollSelectorProvider,这里主要分析Linux平台下的 // 之后openSelector方法(一会看下面)会返回一个EPollSelectorImpl作为Selector的实现,我们一般提及的Selector就是它了 return SelectorProvider

11月11日的1500字感想

倖福魔咒の 提交于 2020-02-25 00:37:47
1,为什么需要异常处理? 异常是导致程序中断执行的一种指令流。如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以 在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序的正常执行。 一旦产生异常,异常之后的语句并不会被执行,而是直接结束程序,并将错误报告给客户了。 2,异常的基本处理格式try—catch。try中捕获异常,catch中处理对应的异常。 try中捕获异常,出现异常之后的代码将不再被执行,而是跳转到相应的catch语句中执行,用于处理异常。 对于异常,也可以设置其统一的出口,使用fially完成。 3,异常类的继承关系 在整个Java的异常结构中实际上有两个最常用的异常类,Exception,Error,这两个类全都是Throwable的子类, Exception,一般表示的是程序中出现的问题,可以直接使用try-catch处理。 Error,一般指的是JVM错误,程序中无法处理。 一般情况下,开发者习惯于将Error,Exception统一称为异常。 一般在输出异常信息的时候,可以直接使用System.out.println进行打印异常对象。 首页可以通过Exception提供的一个方法,public void printStackTrace();来打印异常信息。 4,Java的异常处理机制:

Swift - 异常处理

你说的曾经没有我的故事 提交于 2020-02-22 09:19:16
Swift 对 Error Handling详解 苹果官方文档解释 跟其它语言一样,Swift的异常处理是在程序抛出异常后的处理逻辑。 Swift提供了一流的异常抛出、捕获和处理的能力。跟Java语言类似, Swift的异常并不是真正的程序崩溃, 而是程序运行的一个逻辑分支;Swift和Java捕获异常的时序也是一样的。当Swift运行时抛出异常后并没有被处理, 那么程序就会崩溃。 在Swift语言中使用Error表示异常, 作用同Java的Exception类或Object-C的NSError类。 苹果建议使用枚举作为异常类型(为什么不推荐用类或者结构体?答案是枚举数据类型本身就是分成若干种情况,很适合做逻辑分支判断条件)。 enum VendingMathineError: Error { case invalidSelection case insufficientFunds(coinsNeed: Int) case outOfStack } 上面声明了枚举类型VendingMathineError,继承于Error。 注意Swift的所有异常类型都继承于Error, 就像Java所有异常类都继承于Exception一样。 类似于Java处理异常的try/catch/finally, Swift提供了 try、try?、try!、catch、throw、throws

08_流

浪尽此生 提交于 2020-02-19 12:12:39
1.在java,对于数据的输入/输出操作以流方式进行。JDK中提供了各种各样的流类,用于获取不同种类的数据,程序中通过标准的方法输入/输出数据 2.从不同角度对流分类: 数据流的方向:输入流和输出流(站在程序的角度看) 处理数据单位:字节流和字符流 功能:节点流和处理流 3.JDK提供的所有流类型位于java.io包内,分别继承自以下四种抽象流类型 4.InputStream的基本方法 int read() throws IOException 读一个字节,如果所有都已读完,返回-1 int read(byte[] buffer) throws IOException 读到buffer字节数组中,返回实际读取的字节数,读完返回-1 int read(byte[] buffer, int offset, int length) throws IOException void close() throws IOException 5.OutputStream的基本方法 void write(int b) throws IOException 向输入流中写一个字节,该字节数据为参数b的低8位 void write(byte[] buffer) throws IOException void write(byte[] buffer, int offset, int length)

2019-05-30 Java学习日记 day20 IO流

荒凉一梦 提交于 2020-02-17 17:04:45
IO流 概念:   IO流用来处理设备之间的数据传输   Java对数据的操作是通过流的方式   Java用于操作流的类都在IO包中   流按流向分为两种:输入流,输出流   流按流操作类型分为两种:     字节流:字节流可以操作任何数据,因在计算机任何数据都是以字节的形式存储的     字符流:字符流只能操作纯字符数据,比较方便 IO流常用父类:   字节流的抽象父类     InputStream     OutputStream   字符类的抽象方法:     Reader     Writer IO程序书写   使用前,导入IO包中的类   使用时,进行IO异常处理   使用后,释放资源 InputStream import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class demo1_FileInputStraem { public static void main(String[] args) throws IOException { //demo1(); FileInputStream fis =new FileInputStream("xxx.txt"); int a; while ((a=fis.read(

java--标准输入输出流

拟墨画扇 提交于 2020-02-17 17:03:32
//读取键盘录入的数据写到a.txt //方式一 private static void method() throws IOException { //创建输入流对象 InputStream is = System.in; Reader r = new InputStreamReader(is); //创建输出流对象 FileWriter fw = new FileWriter("a.txt"); //读取数据 byte[] bys = new byte[1024]; int len; while((len = is.read(bys))!=-1) { fw.write(new String(bys, 0, len)); fw.flush(); } fw.close(); is.close(); } //方式二 private static void method2() throws IOException { //创建输入流对象 InputStream is = System.in; Reader r = new InputStreamReader(is); //创建输出流对象 FileWriter fw = new FileWriter("a.txt"); //读取数据 char[] chs = new char[1024]; int len; while((len = r

使用java进行文件编码转换

折月煮酒 提交于 2020-02-17 01:09:31
在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成UTF-8,如果直接在eclipse中把文件编码修改成UTF-8,恭喜你,是乱码,因为不能直接从GBK到UTF-8进行转换,这时就需要我们手动的来转换编码。下面是一个文件编码转换的工具类。 package com.mikan.stuff; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.nio.charset.UnsupportedCharsetException; public class FileCharsetConverter { public static void main(String[] args)

JavaSE知识-20(IO(字节流)

风流意气都作罢 提交于 2020-02-16 13:42:53
目录 IO流概述及其分类 FileInputStream read()方法返回值为什么是int FileOutputStream FileOutputStream追加 拷贝图片 字节数组拷贝之available()方法 定义小数组 定义小数组的标准格式 BufferedInputStream和BufferOutputStream拷贝 flush和close方法的区别 字节流读写中文 流的标准处理异常代码1.6版本及其以前 流的标准处理异常代码1.7版本 图片加密 拷贝文件 录入数据拷贝到文件 IO流概述及其分类 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流。 流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的 字符流 : 字符流只能操作纯字符数据,比较方便。 2.IO流常用父类 字节流的抽象父类: InputStream OutputStream 字符流的抽象父类: Reader Writer 3.IO程序书写 使用前,导入IO包中的类 使用时,进行IO异常处理 使用后,释放资源 FileInputStream read()一次读取一个字节 package com.hwh.Stream; import java.io

JdbcUtils 系列1

好久不见. 提交于 2020-02-14 14:05:23
1、开发前准备 创建java pro为dbutils_1,没有lib目录,建一个即可 /dbutils_1/lib/mysql-connector-java-5.0.8-bin.jar 数据库搭建c3p0 /dbutils_1/src/c3p0-config.xml /dbutils_1/lib/c3p0-0.9.2-pre1.jar /dbutils_1/lib/mchange-commons-0.2.jar 2、包commons-dbutils-1.2.jar 3、工具类JdbcUtils.java package cn.itcast.utils; import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class JdbcUtils { private static ComboPooledDataSource ds = null; // 创建c3p0连接池,真个应用只需要初始化一次,放在静态代码块里面 static { ds = new ComboPooledDataSource("flx"); } // 取得连接 public static