`
QCheng5453
  • 浏览: 15873 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android笔记——Day3 *异常处理 *Java中的io *匿名内部类

 
阅读更多

1、异常处理。

··Java中含有异常处理机制。

··Java中异常的继承关系:

Throwable<——Exception<——RuntimeException、··· ···

··通常有两种情况需要对异常进行处理。

1)产生了运行时的异常,即unchecked异常,及RuntimeException类及其子类。

2)编译器对可能产生异常的代码在编译时强制要求对异常进行处理,即checked异常。包括Exception和除了 RuntimeException意外的异常类。

一般有一下几种情况:

1)Thread.sleep(long);

2)  对IO流的打开或关闭。

3)  以后遇到再加。

··对于异常的处理方法:

 

		 try{
                        //产生或者可能产生异常的代码
			}
		}
		catch (Exception e) {
			// 对于异常的处理的代码
		}finally{
                        //无论是否产生异常都会执行的代码,一般用于IO流的关闭等等
		}

 

 

··可以在代码中编写产生异常的代码。如果产生的是unchecked异常,比如RuntimeException re = new RuntimeException(String);然后可用throw关键字对其进行抛出,在编译时不会报错,在运行时会打印出错误代码。

而如果是checked异常,如果不在产生异常的地方加上try—catch结构,可以在产生异常的函数中加上throws关键字将异常交给调用函数的上一级进行捕捉。

比如说:

 

 

	public void error(){
		RuntimeException re = new RuntimeException("错误啦");
		throw re;//这句抛出异常,如果没有这句,这么都不会产生。
	}//编译时不会报错,运行结果会打印出错误。
	
	public void error() throws Exception{ //这句将异常交给上级处理。
		Exception e = new Exception("错误啦");
		throw e;
	}

---------------------------------------------------------------------------------------------------------------------------------

 

2、Java中的IO

··Java中的IO可以分为字节流和字符流,或者是分为节点流和处理流。

1)字节流:

InputStream<—FileInputStream

其中有函数int read(byte [] b , int off , int len),第一个形参表示将 FileInputStrean对象中的内容放入b中,第二个表示从b的第几位开始放(偏移量),第三个len 表示预计读取的字节数,返回值表示真正读取的字节数。如果什么都没有(读到文件结尾) 返回-1;

OutputStream<—FileOutputStream

其中由函数void write(byte [] b , int off , int len),意义和上面类似。

2)字符流:

FileReader和FileWriter和上面的基本上是一样的。

3)需要注意的是在IO流创建和关闭的时候要加上try—catch结构,因为这些行为都是checked异 常。

··Java中“装饰者模式”:

··为了可以对一大部分类进行一些共同的操作,即对一些类进行“装饰”,Java中可以采用复合的方式,即新建 一个类,其中包含所要“装饰”类的对象,在以该类为参数重载一个构造函数。直接看代码吧,直接说起来有点虚。

 

public class lei{
	public static void main(String args[]){
		FileReader fr = null;
		BufferedReader br = null; //BufferedReader是一个用于IO的处理流,也是一个装饰类
		String line = null;
		try{
			fr = new FileReader("c:/in.txt");
			br = new BufferedReader(fr);//可以用某个IO流作为参数构成BufferedReader对象
			while((line = br.readLine())!= null){//经常会利用BufferedReader对象的readLine函数
				System.out.println(line);
			}	
		}catch (Exception e) {
		}finally{
			try{
				fr.close();
				br.close();
			}catch (Exception e) {
			}
		}
	}
}
 

3、匿名内部类

··在Android开发中经常性地会用到匿名内部类。

··匿名内部类的用法比较简单,即这个类是在某个类之中且不给它赋名字,一般用于一次性产生的对象

 

        startButton.setOnClickListener(new OnClickListener() {//这里就是一
个匿名内部类,直接覆写了OnClickListener这个类中的onClick函数,并生成了一个
对象。
			public void onClick(View v) {
				new Thread(run1).start();//开始执行run1;
			}
		});

 

4、文件下载。

http://edu.gamfe.com/tutor/d/37218.html

··这里只讨论非常简单的文件下载--#

··Java中文件下载一般分为如下一个步骤。

1)新建一个URL对象。

2)用所建的URL对象生成以个URLConnection对象用于建立连接。

3)用URLConnection对象的getInputStream()函数获取该URL的输入流。

4)得到输入流之后可以写入SD卡或是进行其他一系列处理。

public class lei{
	public static void main(String args[]){
		BufferedReader br = null;
		String line = null;
		try{
			URL url = new URL("http://baike.baidu.com/view/1007958.htm");//新建一个URL对象
			URLConnection con = (URLConnection)url.openConnection();//用URL对象的openConnection()方法新建一个URLConnection对象,注意要向下转型。
			InputStream is = con.getInputStream();	
			br = new BufferedReader(new InputStreamReader(is));//需要先将字节流转为字符流,因为BufferedReader是字符流
			while((line = br.readLine())!= null){
				System.out.println(line);//这里只是将得到内容输出,最后的输出结果是htm代码。
			}
		}catch (Exception e) {
		}finally{
			try{
				br.close();
			}catch (Exception e) {
			}
		}
	}
}
 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics