泛型 放射机制
//定义一个类
class Gen<T>
{private T o;
//构造函数
public Gen(T a){o=a;}
//得到T的类型名称
public void showTypeName()
{System.out.println("类型是:"+o.getClass().getName());
//通过反射机制,我们可以得到T这个类型的很多信息
//比如得到成员函数名
Method []m=o.getClass().getDeclaredMethods();
//打印
for(int i=0;i<m.length;i++)
{System.out.println(m[i].getName());
}
}}
-
异常处理
当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,java就会用异常对象来描述
java中用两种方法处理异常:
- 在发生异常的地方直接处理
- 将异常抛给调用者,让调用者处理
异常分类:
- 检查性异常:java.lang.Exception
- 运行期异常:java.lang.RuntimeException
- 错误:java.lang.Error
package com.test;
import java.io.*;
import java.net.*;
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//检查异常 编译器能检查出
//1.打开文件
FileReader fr = null;
try {
fr=new FileReader("c:\\aa.txt");
//在出现异常的地方就终止执行代码,然后进入到catch语句
//如果有多个catch语句,则进去匹配异常的那个catch语句
//go输出不了 进入catch
System.out.println("go");
Socket s=new Socket("619.135.169.125",80);
}
//最大捕获 简单好用捕获所有异常
catch (Exception e) {
System.out.println("message:"+e.getMessage());
e.printStackTrace();//这个更好使 会告诉出错的行数
}
//最小捕获 分成不同的异常
//catch(FileNotFoundException e){
//把异常的信息输出,利于排除bug
//e.printStackTrace();
// }catch(IOException e2)
// {
// e2.printStackTrace();
// }
finally{
System.out.println("进入finally");
//这个语句块,不管有没有异常都会执行
//一般说,把需要关闭的资源(文件,连接,内存)
if(fr!=null)
{
try{
fr.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
System.out.println("ok");
//2.连接一个61.135.169.125 ip的端口号4567
//Socket s=new Socket("61.135.169.125",80);
//运行异常 编译器不能检查出
//int a =4/0;
//int arr[]={1,2,3};
//System.out.println(arr[10]);
}
}
package com.test;
import java.io.*;
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Father father = new Father();
father.test1();
}
}
class Father
{
private Son son =null;
public Father()
{
son = new Son();
}
public void test1()
{
System.out.println("1");
try{
son.test2();
}catch(Exception e)
{
System.out.println("父亲在处理");
e.printStackTrace();
}
}
}
class Son
{ public void test2() throws Exception
{
FileReader fr=null;
fr = new FileReader("d:\\dafd.txt");
System.out.println("1");
}
}