🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #22077

Java���˼��---��9�� Υ�������

#22077
From: �˺�2��
Date: Tue, 28 Oct 2003 01:45
536 lines
61791 bytes
Java�Ļ�ԭ����ǡ���ʽ����Ĵ��벻�����С���
��C++���ƣ������������������ڱ����ڼ䣬�������ͼ���г�����ǰ��Ȼ������
�д������ڱ����ڼ���⵽����Щ��������������ڼ������ô���ĵ޽���ͨ��һ
Щ����������ߴ���һЩ�ʵ�����Ϣ��ʹ��֪���������ȷ�ش������������⡣
��C++���������������У���ͨ�����������ﵽ���Ŀ�ġ���������ͨ������Ϊһ�ֹ�
�����������ģ������Ϊ����������Ե�һ���֡����͵أ�������Ҫ����һ��ֵ������
һ����־��λ���������߻�����Щֵ���־���жϾ��巢����ʲô���顣Ȼ������
ʱ������ţ����ڷ�����������������Щʹ��һ����ij���Ա�������������������
�������룺���ǵģ�������ܻ��������˵Ĵ����г��֣����������ҵĴ����С�������
�ĺ���������һ�㲻����Ƿ�����˴�����ʱ��������ȷʵ�Ե�̫�޴�����ֵ�ü�
�飻ע�͢٣�����һ���棬��ÿ�ε���һ������ʱ������ȫ�桢ϸ�µĴ����飬��ô
����Ŀɶ���Ҳ���ܴ��Ƚ��͡����ڳ���Ա������Ȼ������Щ����ά���Լ���ϵͳ��
��������Ӧ�öԴ�������̵���᣺�������ַ�ʽ���ƴ�����ô�ڴ������͡���׳��
����ά���ij���ʱ���϶���������С�����ӡ�
�٣�C����Ա�о�һ��printf()�ķ���ֵ��֪���ꡣ
����ķ������ڴ���������ų�����żȻ�ԣ�ǿ�Ƹ�ʽ����ȷ�����ַ���ʵ�����кܳ�
����ʷ����Ϊ����60�����ڲ���ϵͳ������ˡ�Υ����ơ��ֶΣ���������׷�ݵ�BA
SIC���Ե�on error goto��䡣��C++��Υ����ƽ�����Ada�Ļ��ϣ���Java����Ҫ��
����C++�Ļ��ϣ���������������Object Pascal����
��Υ��Exception������ʱ�����һ�֡����⡱������༴�����֮���һ�֡�
�쳣���������ⷢ���ʱ�����ǿ��ܲ�֪�������ν�������϶�֪���Ѳ��ܲ���һ
�еؼ�����ȥ����ʱ����������ͣ����������ij�ˡ�ij��ָ��������ʲô���飬�Լ�
�ò�ȡ���ֶԲߡ���Ϊ�����������⣬���ؿ��ܲ�û���㹻�����Ϣ����ˣ�������
Ҫ�����ƽ����ĸ����ˣ�����������ȷ�ľ���������һ������������
Υ����Ƶ���һ��ô������ܹ��򻯴�����ƴ��롣������Ҳ���ü��һ���ض��Ĵ���
��Ȼ���ڳ���Ķദ�ط�������п��ơ����⣬Ҳ����Ҫ�ڷ������õ�ʱ�������
��Ϊ��֤�����ܲ�������Ĵ��󣩡�����ֻ��Ҫ��һ���ط��������⣺��Υ�����ģ��
�����ߡ�Υ������������������Ч���ٴ�������������Щ����������������Ĵ�����
ר�ž������Ĵ���ָ�����һ������£����ڶ�ȡ��д���Լ����ԵĴ�����ø�
�����?
����Υ���������Java������ǿ��ʵʩ�ģ�������������ѧϰΥ����ƣ������ȷʹ��
�����д�Ĵ������ӡ��������ҽ�����������ȷ����Υ������Ĵ��룬�Լ���ij����
�������鷳��ʱ�򣬸��������Լ���Υ��
9.1 ����
��Υ����������ʾ�ڳ���ʲô�����ʱ��Ӧ��ֹ������������ļ���Ϊ�˽�Υ������
����ͨ������ֿ���Υ�������Ƿdz���Ҫ��һ�����ء�����ͨ���������£������ڵ�
����ӵ���㹻����Ϣ������ij�̶ֳ��Ͻ�����������⡣����Υ������������£�ȴ��
��������ȥ����Ϊ����û���ṩ�������������㹻�����Ϣ����ʱ������������Ψһ
�������������ػ��������Ǹ�����ί�и�һ����߼��ĸ����ˡ�����dz���Υ��ʱ��
�ֵ������
һ���򵥵������ǡ��������ܱ������б�Ҫ���м�飬ȷ�����򲻻�ð��
�������������ִ�г������ͨ��ʲô֪����ĸ�����أ����Ǹ��ض��ķ������
������ͼ������Ǹ�����Ļ����У����ǻ���֪������ζԴ�һ�����ĸ������������
һ��û��Ԥ�ϵ���ֵ���Ͳ��ܶ�����д��?���Ա������һ��Υ���Dz���һ�е�
����ִ����ȥ��
����һ��Υ��ʱ���ᷢ������顣���ȣ������봴��Java����һ��ķ�������Υ���
�����ڴ桰�ѡ��ʹ��new�����������ֹͣ��ǰִ��·������ס����������·��
������ȥ����Ȼ��ӵ�ǰ�Ļ������ͷų�Υ�����ľ���ʱ��Υ����ƻ��ƻ�ӹ�
һ�У�����ʼ����һ��ǡ���ĵط������ڼ�������ִ�С����ǡ���ĵط����ǡ�Υ��
�������������ְ���Ǵ������лָ���ʹ����Ҫô������һ��ִ��·����Ҫô�򵥵ؼ�
��
��Ϊ����Υ���һ����ʾ���ҿ�˼��һ����Ϊt�Ķ�������Щʱ�򣬳������
����һ����δ��ʼ���ľ�����������Ǹ����������һ������֮ǰ����ý���һ��
��顣�ɽ�������йص���Ϣ���͵�һ�����ij����У������Ǵ���һ������Ķ���
���������ǵ���Ϣ�������䡰������Throw�������ǵ�ǰ�ij���֮�⡣��ͽ���������
һ��Υ����ߡ�����һ��Υ����������Ĵ����ʽ��
if(t == null)
throw new NullPointerException();
����㡰��������һ��Υ���ڵ�ǰ�����У���ʹ�����ܷ����һ��������������ͼ
��������ᱻת�Ƶ������ǡ���ĵط������׼ȷ��˵���Ǹ��ط����þͻ���¶������

9.1.1 Υ���Ա���
��Java�������κζ���һ����Ҫ��new���ڴ���ﴴ��Υ�������һ������������
���б�׼Υ���У���������������������һ����Ĭ�Ϲ��������ڶ�������ʹ��һ���ִ�
�Ա�����ʹ��������Υ�������������Ϣ��
if(t == null)
throw new NullPointerException("t = null");
�Ժ��ִ����ø��ַ�����ȡ�����������Ժ��չʾ������
�����ؼ���throw�����Ϸ��һ������һϵ�в���˼������顣������ִ��new���
ʽ������һ�����ڳ��򳣹�ִ�з�Χ֮�ڵĶ��󡣶�������Ȼ����Ϊ�Ǹ�������ù�
��������󣬶���ʵ�ʻ�ӷ����з��ء������ܶ��������ͨ�������Ƿ������Ϊ����
�����͡�Ϊ�������Υ����ƣ��ɽ����������һ�ַ��ػ��ơ������Dz�Ҫ���������
���������������鷳��ͨ��������һ��Υ����ɴ�ԭ�������������˳�������
���ȷ���һ��ֵ�����˳�������������
���ǣ�����ͨ�������ص������Ե��˱�ȫ�������ˣ���Ϊ���Ƿ��صĵط������ͨ����
�����з��صĵط�����Ȼ����ģ����ǽ�����һ��ǡ����Υ��������������Υ����
�����ĵط������൱ңԶ�����ڵ��ö�ջ��Ҫ������༶����
���⣬���ǿɸ����Ҫ�����κ����͵ġ����������󡣵�������£�����ҪΪÿ�ֲ�ͬ
���͵Ĵ���������һ�಻ͬ��Υ�����ǵ�˼·����Υ������Լ���ѡ��Υ�������
���б�����Ϣ�������ڸ�󳡾��е�ij���˿�֪����ζԴ����ǵ�Υ��ͨ����Ψһ��
��Ϣ��Υ���������ͣ���Υ������б����ûʲô���壩��
9.2 ��IJ���
��ij����������һ��Υ����뱣֤��Υ���ܱ����񣬲������ȷ�Դ����Java��Υ
����ƻ��ƣ����һ���ô���������������һ���ط�������������Ҫ����������ϣ�Ȼ
������һ���ط��Դ������Ǹ������ڲ��Ĵ���
Ϊ���Υ������β���ģ����ȱ������ա�������ĸ������һ������Ĵ�����
���п��ܲ���Υ���ں���������ڿ�����ЩΥ��Ĵ��롣
9.2.1 try��
��λ��һ�������ڲ�������������һ��Υ�������������ڲ����õ���һ����������
��Υ���Ǹ������ͻ���Υ����������˳���������һ��throw�뿪�����������Ǹ�
�����ڲ�����һ������Ĵ���飬�����Υ����ͽ�����try�顱����ΪҪ�������
�������ԡ����ַ������á�try������һ����ͨ����������һ��try�ؼ��ֿ�ͷ��
try {
// ���ܲ���Υ��Ĵ���
}
����һ�ֲ�֧��Υ����Ƶı������ȫ������󣬱��������úʹ�������뽫ÿ��
��������Χ�������������ε�����ͬ�ķ���������ʹ����Υ����Ƽ����󣬿ɽ�����
����������һ��try���ڣ���ͬһ�ص㲶������Υ�������ɼ�������ǵĴ��룬��
ʹ����ױ������Ϊ���뱾��Ҫ�ﵽ��Ŀ����Ҳ�����뷱���Ĵ��������
9.2.2 �������
��Ȼ����ɵ�Υ�������ij���ط���ֹ��������ط�������Υ�����������Υ�����ģ
�顣��������벶���ÿ��Υ�����ͣ���������һ����Ӧ��Υ���������Υ���������
����try����棬����catch�����񣩹ؼ��ֱ�ǡ�������ʾ��
407-408ҳ����
ÿ��catch�Ӿ䡪����Υ�����������������һ��С�ͷ���������Ҫ����һ��������ֻ��
һ�����ض����͵��Ա��������ڿ������ڲ�ʹ�ñ�ʶ��id1�� id2�ȵȣ�������һ����
ͨ�ķ����Ա�������������ʱҲ��ʹ�ñ�ʶ����ΪΥ���������ṩ���㹻����
Ϣ������Ч����Υ���ʹ���ã���ʶ��Ҳ�����λ��
���������롰���ӡ���try����档����������һ��Υ��Υ����ƻ��ƾͻ���Ѱ�Ա���
��Υ���������ĵ�һ��������������������Ǹ�catch�Ӿ䣬����ΪΥ���ѵõ���
�ƣ�һ��catch�Ӿ����Կ�����������Ҳ��ֹͣ����ֻ������catch�Ӿ�Ż�õ�
ִ�У�����switch��䲻ͬ��������ÿ��case����Ҫһ��break�����ֹ��ִ������
��䡣
��try���ڲ�����ע�������ͬ�ķ������ÿ��������ͬ��Υ��ֻ��Ҫһ����������

1. �ж���ָ�
��Υ����������У����������ֻ������ڡ��жϡ������У�Java��C++�ṩ�˶�����
������֧�֣������Ǽٶ�����dz��ؼ�û�а취����Υ����ĵط�������˭ֻҪ��
������һ��Υ��ͱ���û�а취���ȴ��󣬶���Ҳ��ϣ���ٻ�����
��һ�ַ����������ָ���������ζ��Υ�������������������ǰ��״����Ȼ��ȡ�ó�
��ķ������ٶ���һ�λ�ɹ�ִ�С���ʹ�ûָ�����ζ����Υ��õ������Ժ���Ȼ���
��ִ�С�����������£����ǵ�Υ�����һ���������á�������������Java�����ø���
��������Ļ��������������ڡ��ָ�������Ϊ������֮����ʱ���ǡ�������һ��Υ��
���ǵ���һ�����ڽ������ķ����������⣬Ҳ���Խ��Լ���try������һ��whileѭ��
�����Ͻ���try�飬ֱ���������ʱΪֹ��
����ʷ�ĽǶȿ���������Աʹ�õIJ���ϵͳ֧�ֿɻָ���Υ����ƣ����ն����õ�����
���жϵĴ��룬�����ָ���̡����Ծ��ܡ��ָ���������ʮ�ֲ��?����ʵ��Ӧ����
ȴ�Ե��������ء����о����Ե�ԭ������ǣ����ǵĿ���ģ�������ʱ�����Ƿ������
Υ���Լ��Ƿ�����ɲ���λ��ר�õĴ��롣���ʹ������ѱ�д��ά����������ϵ
ͳ������ˣ���ΪΥ������ڶ��λ�ò���
9.2.3 Υ��淶
��Java�У�����ЩҪ���÷����Ŀͻ�����Ա������Ҫ֪ͨ���ǿ��ܴ��Լ��ķ������
����Υ������һ������ò��������ֻ�������ʹ�ͻ�����Ա׼ȷ��֪��Ҫ��дʲô��
������������DZ�ڵ�Υ��Ȼ������ͬʱ�ṩ��Դ�룬�ͻ�����Ա������ȫ�̼���
�룬�ҳ���Ӧ��throw��䡣��������ˣ�ͨ��������ͬԴ���ṩ�⡣Ϊ���������⣬
Java�ṩ��һ��������﷨��ʽ����ǿ�����Dz��ã����Ա���ò�ظ��߿ͻ�����Ա�÷�
���ᡰ������ʲôΥ����Է�����ؼ��Կ��ơ����������������Ҫ�����ġ�Υ���
�����������ڷ���������һ���֣�λ���Ա����������б�ĺ��档
Υ��淶������һ������Ĺؼ��֣�throws���������ȫ��DZ�ڵ�Υ�����͡���ˣ���
�ǵķ������忴����Ӧ������������ӣ�
void f() throws tooBig, tooSmall, divZero { //...
��ʹ���������룺
void f() [ // ...
����ζ�Ų���ӷ����������Υ�������ΪRuntimeException��Υ�����⣬�����
���κεط����������Ժ󻹻���ϸ��������
��������ȫ����Υ��淶�����������������һ��Υ��û�ж�����п��ƣ�������
����⵽�����������������DZ������Υ�����ָ��Ӧ�ôӷ����������һ��Υ
��淶��ͨ���ִӶ������ײ�����Υ��淶��Java���ڱ����ڱ�֤Υ�����ȷ�ԣ�ע
�͢ڣ���
�ڣ�������C++Υ����ƻ���һ������Ľ����߳�ǵ������ڣ����򲻻Ჶ�񲻷�
��Υ��淶�Ĵ�����ʹ��C++��Υ����ƻ����Ե��ô�����
����������ط��ɲ�ȡ��ƭ�ֶΣ�Ҫ��������һ����û�з����Υ������������
���ǵ�Ҫ�󣬲�ǿ��ʹ������������û�������IJ������Ǹ�Υ���?��ʵ��Ӧ����
���ɽ�����Ϊ�Ǹ�Υ���һ����ռλ��ʹ�á�����һ�����Ժ���Է���ز���ʵ�ʵ�
Υ�������޸����еĴ��롣
9.2.4 ����������
���ǿɴ���һ�������������䲶���������͵�Υ�����������Dz������Υ������
Exception��Ҳ�����������͵Ļ�Υ��Exception�������ڼ������б�̻�Ļ�
������������ʾ��
catch(Exception e) {
System.out.println("caught an exception");
}
��δ����ܲ����κ�Υ��������ʵ��ʹ��ʱ��ý������ڿ������б��ĩβ����ֹ��
���ں�����κ�����Υ�������ʧЧ��
���ڳ���Ա���õ�����Υ������˵������Exception�������ǵĻ��������Dz�����
����Υ��̫�����Ϣ�����ɵ���������Ļ���Throwable�ķ�����
String getMessage()
�����ϸ����Ϣ��
String toString()
���ض�Throwable��һ�μ�Ҫ˵�������а�����ϸ����Ϣ������еĻ�����
void printStackTrace()
void printStackTrace(PrintStream)
��ӡ��Throwable��Throwable�ĵ��ö�ջ·�������ö�ջ��ʾ�������Ǵ�Υ�����
��ķ������õ�˳��
��һ���汾���ӡ����׼���󣬵ڶ������ӡ�����ǵ�ѡ�����̡�����Windows�¹�����
�Ͳ����ض����׼������ˣ�����һ��Ը��ʹ�õڶ����汾����������͸�System.o
ut������һ��������Ϳ��ض�������ϣ����κ�·����
������⣬���ǻ��ɴ�Throwable�Ļ���Object�����ж���Ļ����ͣ��������һЩ
����������Υ�������˵������һ���������õ��� getClass()����������Ƿ���һ����
�����������������ࡣ���ǿ�������getName()��toString()��ѯ���Class���
���֡���ɶ�Class�������һЩ���ӵIJ�����������Щ������Υ��������Dz���Ҫ�ġ�
�����Ժ󻹻���ϸ����Class����
������һ����������ӣ���չʾ��Exception������ʹ�ã���ִ�иó����������ѣ����
����3��3.1.2С�ڡ���ֵ������
411ҳ�г���
�ó���������£�
411ҳ�³���
���Կ������÷��������ṩ�˴�����Ϣ����ÿ����Ϣ����ǰһ����Ϣ��һ���Ӽ���
9.2.5 ���¡�������Υ��
��ijЩ����£����������������ղŲ�����Υ���ر�������Exception�������п���
��Υ��ʱ������������ӵ�е�ǰΥ��ľ������ֻ��򵥵����������Ǹ����ɡ�
������һ�����ӣ�
catch(Exception e) {
System.out.println("һ��Υ���Ѿ�����");
throw e;
}
���¡�������һ��Υ����Υ�������һ��������Υ��������С�����ͬһ��try���
�κθ��һ����catch�Ӿ���Ȼ�ᱻ���ԡ����⣬��Υ������йص����ж�������õ���
�����������ڲ����ض�Υ�����͵ĸ��һ���Ŀ��������Դ��Ǹ���������ȡ��������Ϣ
��
��ֻ�Ǽ򵥵�����������ǰΥ�����Ǵ�ӡ�����ġ���printStackTrace()�ڵ��Ǹ�Υ��
�йص���Ϣ����Υ�����Դ�ض�Ӧ������������������ĵص��Ӧ�����밲װ�µĶ�
ջ������Ϣ���ɵ���fillInStackTrace()����᷵��һ�������Υ��������Υ���
����������£�����ǰ��ջ����Ϣ��䵽ԭ����Υ�����������г������ʽ��
412-413ҳ����
��������Ҫ���к���ע���ڱ�dz�����ע���17��û����Ϊע���С��������������
��
413ҳ�г���
��ˣ�Υ���ջ·��������ζ����ס���������㣬�����Լ����ظ��������˺ü���
��
������17�б�ע�����ע���У�������Ե�18�еı�ע���ͻỻ��fillInStackTrace
()��������£�
413ҳ�³���
����ʹ�õ���fillInStackTrace()����18�г�ΪΥ�������㡣
���g()��main()��Throwable�������Υ�����г��֣���ΪfillInStackTrace()����
��һ��Throwable����ľ������Throwable��Exception��һ�����࣬�����п��ܻ�
��һ���ܹ����������Ķ��󣨾���Throwable���ԣ�����ȴ����һ�� Exception��Υ��
����ˣ���main()������Exception�ľ����ܶ�ʧ�Լ���Ŀ�ꡣΪ��֤���ж�����Ȼ
���򣬱�����ǿ�� Throwableʹ��һ��Υ��淶���ٸ�������˵�����������Υ��㲻
����main()�б����񵽣�
414ҳ�ϳ���
Ҳ�п��ܴ�һ���Ѿ������Υ�����¡�������һ����ͬ��Υ���������������õ�
��ʹ��fillInStackTrace()���Ƶ�Ч����Υ����Դ���йص���Ϣ��ȫ����ʧ��������
�µ������µ�throw�йص���Ϣ��������ʾ��
414-415ҳ����
������£�
415ҳ����
���һ��Υ��ֻ֪���Լ�����main()���������f()��ע��Throwable���κ�Υ��淶��
�����DZ���ġ�
��Զ���ع���������ǰһ��Υ�������֮�йص������κ�Υ�����Ƕ�������new��
���ġ����ڴ��Ϊ��Ķ������������ռ������Զ��������
9.3 ��׼JavaΥ��
Java����һ����ΪThrowable���࣬��Կ�����ΪΥ�������������ж�������������
��Throwable���������ֳ������ͣ��༴���� Throwable�̳С��������У�Error����
���ں�ϵͳ��������һ�㲻�����Ⲷ�����ǣ���������������⣩��Exception�ǿ���
���κα�׼Java����෽���С��������Ļ����͡����⣬������ɴ������Լ��ķ���
�Լ�������ż���¼��С���������
Ϊ���Υ���һ���ۺϸ����õķ������Ķ���http://java.sun.com�ṩ������Jav
a�ĵ�����Ȼ�������������Ǹ�ã���Ϊ�˶Ը���Υ����һ����ŵ�ӡ�������������
���м�ֵ�ġ�����Ҳ��þͻᷢ�֣��������⣬һ��Υ�����һ��Υ��֮�䲢��������
������ĵط������⣬Java�ṩ��Υ�����������������ࣻ�ӱ�����˵��������ӡ��һ
��������û������ġ���Ҵ�����ط���õ��κ��¿����Ҳ�ṩ�������Լ���Υ��
��������Ҫ���յ��ǻ����Լ�����ЩΥ���ܹ���ʲô��
java.lang.Exception
���dz����ܲ���Ļ�Υ������Υ���Ǵ��������ȥ�ġ�����Ҫע�����Υ�����
�ִ�?������⣬����Υ����ͨ�����Ǿ�����ѡ�ģ����Ժ������˵�����׷�����ʲ
ô���顣Υ��ȫ����java.lang�ж���ģ���Щ��Ϊ���ṩ��������֧�֣���uti
l��net�Լ�io�ȡ������ǿ��Դ����ǵ����������п�����һ�㣬���߹۲����Ǵ�ʲô��
�С����磬����IOΥ���Ǵ�java.io.IOException�̳еġ�
9.3.1 RuntimeException���������
���µĵ�һ�������ǣ�
if(t == null)
throw new NullPointerException();
�������ƺ��ڴ��ݽ���һ��������ÿ������ж�������null����Ϊ��֪���������Ƿ�
�Ѵ�����һ����Ч�ľ�����������൱���µġ������˵��ǣ����Ǹ���������
����������Java���еı�׼�����ڼ���һ���֡�����һ���վ����˵��ã�Java��
�Զ�����һ�� NullPointerExceptionΥ�����������������κ�����¶��Ƕ���ġ�
�������ﺬ��һϵ��Υ�����͡�����ȫ����Java�Զ���ɣ������������Զ��ְ�����
���Լ���Υ��淶������ǣ�ͨ���������뵥��һ����Ϊ RuntimeExcept
ion�Ļ������棬����ȫ����ϵ�һ������һ���ܺõļ̳����ӣ�������һϵ�о�
��ij�ֹ�ͨ�Ե����ͣ�������ijЩ��ͨ����������Ϊ�����⣬����û��Ҫר��дһ��Υ
��淶��ָ��һ���������ܻᡰ������һ��RuntimeException����Ϊ�Ѿ��ٶ����ܳ���
���������������������ָ������еĴ������Լ�����Զ����ר�Ų���һ����������
Υ���RuntimeException��������Ĭ������»��Զ��õ����?��������Runtim
eException�����ǵĴ���ͻ����൱�������������Լ��İ����ѡ��������һ��
��RuntimeException��
�������ЩΥ���ֻ����ʲô����أ����ڱ���������ǿ��Υ��淶�������ǣ�
���Լ��粻����Ļ���һ��RuntimeException���ܹ��˵����ǵ���main()����������;
����Ϊ����ʱ��������飬����������������ӣ�
417ҳ�ϳ���
����Ѿ�������һ��RuntimeException�����ߴ���̳е��κζ���������һ���������
����Ϊ��������Ҫ��Ϊ��Щ����ָ��Υ��淶��
������£�
java.lang.RuntimeException: From f()
at NeverCaught.f(NeverCaught.java:9)
at NeverCaught.g(NeverCaught.java:12)
at NeverCaught.main(NeverCaught.java:15)
���Դ𰸾��ǣ�����һ��RuntimeException��õ���main()������;����ͬʱ��������
����ô�������˳�ʱ����Ϊ�Ǹ�Υ�����printStackTrace()��
ע��Ҳ�������Լ��Ĵ����н�����RuntimeException����Ϊ����������ȷʵ����������
�п��ơ���ΪRuntimeException�ڴ�ʱ���һ����̴���
(1) һ�����Dz��ܲ���Ĵ������磬�ɿͻ�����Ա���մ��ݸ��Լ�������һ���վ��
����
(2) ��Ϊһ�����Ա��һ��Ӧ���Լ��Ĵ����м��Ĵ�����ArrayIndexOutOfBoundEx
ception����ʱӦע������Ĵ�С����
���Կ�������õ������������������Υ����Ϊ���������ڳ���ĵ��ԡ�
����һ����Ȥ�ĵط��ǣ����Dz��ɽ�JavaΥ���Ϊ��һ��;�Ĺ��ߡ���ȷ���������
���ڿ�����Щ����������ڴ��󡪡��ɴ�����Ʒ�Χ֮����������������ǣ���Ҳ
�ر������ڵ���ijЩ�������͵ı�̴�����Щ�DZ�������ⲻ���ġ�
9.4 �����Լ���Υ��
����һ����Ҫʹ��JavaΥ����һ��������գ���Ϊ��������Ҫ�����Լ���Υ���Ա�
ָ���Լ��Ŀ������ɵ�һ��������󡪡�������Java�ּ��ṹ��ʱ�������������
��Ԥ֪�ġ�
Ϊ�����Լ���Υ���࣬�����һ�����е�Υ�����ͼ̳С�������ں���������Υ�����
���̳�һ��Υ���൱�򵥣�
418-419ҳ����
�̳��ڴ�������ʱ����
419ҳ�ϳ���
����Ĺؼ��ǡ�extends Exception���������˼�ǣ������һ��Exception��ȫ������
���⣬���и��ĺ��塣���ӵĴ��������dz��١���ʵ��ֻ������������������� MyE
xception�Ĵ�����ʽ�����˶��塣���ס���������Dz���ȷ����һ�����๹��������
�������Զ����û���Ĭ�Ϲ��������ڵڶ����������У�ͨ��ʹ��super�ؼ��֣���ȷ��
���˴���һ��String����Ļ��๹������
�ó������������£�
419ҳ�³���
���Կ������ڴ�f()����������MyExceptionΥ���У�ȱ����ϸ����Ϣ��
�����Լ���Υ��ʱ�������Բ�ȡ���IJ��������ǿ���Ӷ���Ĺ���������Ա��
419-421ҳ����
��ʱ�����һ����ݳ�Աi��ͬʱ�����һ������ķ����������ȡ�Ǹ�ֵ��Ҳ�����һ
������Ĺ����������������Ǹ�ֵ�����������£�
421ҳ�ϳ���
����Υ�������һ����ʽ�Ķ������Կ��Լ��������̣���һ����ǿΥ���������
����Ҫע�⣬��ʹ���Լ������Ŀͻ�����Ա��˵�����ǿ��ܴ��������Щ��ǿ����Ϊ
���ǿ���ֻ�Ǽ򵥵�Ѱ��׼����ɵ�Υ�������ⲻ���κ����顪�����Ǵ����Java
��Υ��ı�׼�÷�������������������п��ܴ���һ����Υ�����ͣ����м���������
�δ��룺
//: SimpleException.java
class SimpleException extends Exception {
} ///:~
��Ҫ����������������Ĭ�Ϲ����������Զ����û����Ĭ�Ϲ�����������Ȼ��������
����£����Dz���õ�һ��SimpleException(String)������������ʵ����Ҳ���ᾭ����
����
9.5 �������
����һ������ʱ��ֻ�ܲ������ڷ����Ļ���汾�ж����Υ������һ����Ҫ������
����Ϊ����ζ�������Эͬ�����Ĵ���Ҳ���Զ�Ӧ���ڴӻ���������κζ��󣨵�
Ȼ�������ڻ��OOP��������а���Υ��
�������������ʾ��ǿ����Υ�����ϵ��������ͣ��ڱ����ڣ���
422-423ҳ����
��Inning�У����Կ������۹���������event()������ָ���Լ��ᡰ������һ��Υ��
����ʵ����û�������������ǺϷ��ģ���Ϊ����������ǿ���û���������ڸ��ǹ��ev
ent()�汾����ӵ��κ�Υ��ͬ��ĵ���Ҳ������abstract������������atBat()��չ
ʾ������
��interface Storm���dz���Ȥ����Ϊ�������Incoming�ж����һ����������event
()���Լ����������ж����һ���������������������ᡰ������һ���µ�Υ�����ͣ�Ra
inedOut����ִ�е���StormyInning extends���͡�implements Storm����ʱ�򣬿��Կ�
��Storm�е�event()�������ܸı�Inning�е�event()��Υ��ӿڡ�ͬ��أ����������
ʮ�ֺ���ģ�����Ļ��������Dz�������ʱ������޷�֪���Լ�������Ƿ���ȷ��
��������Ȼ������interface�ж����һ���������ڻ��������rainHard ()�����
��Υ��ʱ��ûʲô���⡣
��Υ������Ʋ��������ڹ���������StormyInning�У����ǿɿ���һ���������ܹ�����
������ϣ����κζ��������ۻ��๹������������ʲô��Ȼ�����ڱ����ְ�ij��
��ʽ���û��๹��������������Զ�����Ĭ�Ϲ������������������๹����������
�Լ���Υ��淶���������л��๹����Υ��
StormyInning.walk()��������ԭ��������������һ��Υ���Inning.walk()ȴ��
�ᡰ�������������������������Ϳ����Լ��Ĵ������Inning.walk()���������
�����κ�Υ�����Ժ��滻��Inning�����һ����Ķ���ʱ��Υ��ͻᡰ����������
�ɴ���ִ�е��жϡ�ͨ��ǿ�������෽�����ػ��෽����Υ��淶��������滻�ɱ�
�������ԡ�
���ǹ��event()������������ʾ��һ��������������汾���Բ������κ�Υ�����
����汾Ҫ����Υ��ͬ��أ��������DZ�Ҫ�ģ���Ϊ����ж���Щ�Ѽٶ�����
�汾�����Υ��Ĵ��롣���ĵ�����������atBat()����ᡰ������PopFoul������
Foul���������һ��Υ���Foul Υ������atBat()�Ļ���汾����ġ�����һ����
�����������Լ��Ĵ��������Inning��ͬʱ������atBat()���ͱ��벶��FoulΥ������
PopFoul�Ǵ�Foul����ģ�����Υ���������ģ�飩Ҳ�Ჶ��PopFoul��
���һ����Ȥ�ĵط���main()�ڲ���������ط�������������ȷ����һ��StormyInning
���󣬱������ͻ�ǿ������ֻ�����ض����Ǹ����Υ����������������͵�����
�ͣ��������ͻ�ǿ�����Dz�����Ի����Υ��ͨ��������Щ���ƣ�Υ����ƴ����
����׳���̶Ȼ���˴��ȸ��ƣ�ע�ۣ͢���
�ۣ�ANSI/ISO C++ʩ�������Ƶ����ƣ�Ҫ������Υ������෽��������Υ����ͬ
�����ߴӺ�����������������£�C++ʵ�����ܹ��ڱ����ڼ���Υ��淶��
���DZ�����ʶ����һ�㣺����Υ��淶���ɱ������ڼ̳��ڼ�ǿ�����صģ���Υ��淶
�������ڷ������͵�һ���֣����߽������˷������Լ��Ա������͡���ˣ����Dz�����
Υ��淶�Ļ��ϸ��Ƿ�����������⣬����Υ��淶������һ�������Ļ���汾��
����������ʾ������ڷ�����������汾�д��ڡ����뷽���ġ��̳С����в�ͬ������
�̳�ʱ�������еķ���Ҳ�������������д��ڣ�������֮������һ���ض������ġ�Υ
��淶�ӿڡ������ڼ̳к͸���ʱ��ø�խ����������ø�?��������̳�
ʱ����ӿڹ���������෴�ġ�
9.6 ��finally���
����һ��Υ���Ƿ���try���з������Ǿ�������ִ��һЩ�ض��Ĵ��롣��һЩ�ض��IJ�
����������������������������ڻָ��ڴ�ʱһ�㶼����Ҫ����Ϊ�����ռ������Զ���
��һ�У���Ϊ�ﵽ���Ŀ�ģ���������Υ���������ĩβʹ��һ��finally�Ӿ䣨ע�͢�
�������������Υ�����С��������������ӣ�
try {
// Ҫ����������
// ���ܡ�������A,B,��C��Σ�����
} catch (A a1) {
// ������ A
} catch (B b1) {
// ������ B
} catch (C c1) {
// ������ C
} finally {
// ÿ�ζ��ᷢ������
}
�ܣ�C++Υ�����δ�ṩfinally�Ӿ䣬��Ϊ���������������ﵽ�������Ч��
Ϊ��ʾfinally�Ӿ䣬�����������������
426ҳ�ϳ���
ͨ��ó����������֪�����Ӧ��JavaΥ������C++��Υ���������ǻָ���Υ��
����ط�����һ��ʵ�������Լ���try������һ��ѭ���ڣ��Ϳɽ���һ���������������
�������֮ǰ���㡣������һ��static������������һЩ�豸������ѭ���ڷ�����ǰ
�������ֲ�ͬ�ķ���������һ�������ǵij�����Ա�ø�ӡ���׳����
������£�
426ҳ�³���
�����Ƿ�������һ��Υ��finally�Ӿ䶼��ִ�С�
9.6.1 ��finally��ʲô
��û�С������ռ����Լ����Զ������ƻ��������Ƶ�һ�������У�ע�͢ݣ���finally��
���ر���Ҫ����Ϊ����Ա�������ڴ����ȷ�ͷš��������� try���ڲ�������ʲô
״������Java�ṩ�������ռ����ƣ������ڴ���ͷż�����Բ����Ϊ���⡣���⣬��
Ҳû�й������ɹ����á���Ȼ��ˣ�Java���ʱ�Ż��õ�finally�أ�
�ݣ����ƻ�������Destructor���ǡ�����������Constructor���ķ���ʡ�����һ����
��ĺ���һ��ij������ʧȥ�ô���ͨ���ͻ���������ǿ϶�֪���������Լ���ʱ��
���ƻ�����C++�ṩ���Զ����ƻ������û��ƣ���Delphi��Object Pascal�汾1��2ȴ��
�߱���һ�����������������У��ƻ����ĺ������÷��������˱仯����
���ڴ����ԭʼ״̬���⣬��Ҫ������һЩ������finally���DZ���ġ����磬������
ʱ��Ҫ��һ���ļ����߽���һ���������ӣ���������Ļ�ϻ�һЩ���������������ⲿ
�����һ�����أ��ȵȡ���������ʾ��
427-428ҳ����
�����Ŀ���DZ�֤main()���ʱ���ش��ڹر�״̬�����Խ�sw.off()����try���Լ�ÿ��
Υ���������ĩβ���������һ��Υ���п��ܲ��������ﲶ��ģ�������sw.off()
��Ȼ������finally�����ǿ��Խ�����try��Ĺرմ���ֻ����һ���ط���
428ҳ�г���
�����sw.off()������һ���ط������۷���ʲô���飬���϶���������
��ʹΥ���ڵ�ǰ��catch�Ӿ伯�ﲶ��finally������Υ����ƻ���ת����߼�����
��һ��������֮ǰ����ִ�С�������ʾ��
428-429ҳ����
�ó�������չʾ�˾��巢������飺
429ҳ�³���
��������break��continue��䣬finally���Ҳ�����ִ�С���ע�⣬�����ϱ�ǩ��br
eak��continueһ����finally�ų���Java��goto��ת��������
9.6.2 ȱ�㣺��ʧ��Υ��
һ������£�Java��Υ��ʵʩ�������Ե�ʮ�ֳ�ɫ�����ҵ��ǣ�����Ȼ����һ��ȱ�㡣
����Υ��ָ�����������һ��Σ����Ҿ�Ӧ���ԣ���һ��Υ�����п��ܼ򵥵ء���
ʧ�����ڲ���finally�Ӿ��һ�����������£����п��ܷ������������
430ҳ�ϳ���
������£�
430ҳ�³���
���Կ��������ﲻ����VeryImportantException���dz���Ҫ��Υ��ļ�����ֻ�Ǽ�
���ر�finally�Ӿ��е�HoHumException�����ˡ�
����һ���൱���ص�ȱ�ݣ���Ϊ����ζ��һ��Υ�������ȫ��ʧ�����Ҿ���ǰ����ʾ��
�������ֶ�ʧ�Ե÷dz�����Ȼ�������ѱ��˲����˿�?��������෴��C ++�����
�ڶ���Υ���ڵ�һ��Υ��õ�����ǰ����ͻᱻ����һ�����صı�̴����?����
Java�Ժ�İ汾�����������⣨�����������Java 1.1��ɵģ���
9.7 ������
ΪΥ���д����ʱ�����Ǿ���Ҫ�����һ�������ǣ���һ������Υ�����ȷ�ؽ�����
���𣿡������ʱ�򶼻�dz���ȫ�����ڹ�������ȴ��һ�������⡣����������������
һ����ȫ����ʼ״̬���������ִ��һЩ�����������һ���ļ�������û���ɶ���
��ʹ�ã�������һ�����������������Щ��������õ���ȷ���������һ����
�����ڲ���������һ��Υ����Щ�����ΪҲ���ܲ�����ȷ�ط���������Щ����ζ��
�ڱ�д������ʱ�����DZ����ر�������⡣
����ǰ���ѧ��finally�����Դ�ҿ�����Ϊ����һ�ֺ��ʵķ����������鲢û����ô��
������Ϊfinallyÿ�ζ���ִ�������롪����ʹ�������������֮ǰ����ִ�����
���롣��ˣ����������finally�����������ڹ����������ʱ����ij����ʽ�ı�
־������ֻҪ�����˱�־���Ͳ�Ҫִ�� finally���ڵ��κζ�����������������������
������Ҫ��һ���ط��Ĵ���ͬ��һ���ط��Ľ�������������Գ���ر���Ҫ������һ��
��Ҫ������ finally�н���������ʽ�����
�����������������Ǵ�����һ����ΪInputFile���ࡣ��������Ǵ�һ���ļ���Ȼ
��ÿ�ζ�ȡ���һ�����ݣ�ת��Ϊһ���ִ��������������� Java��׼IO���ṩ��FileR
eader�Լ�BufferedReader�ࣨ���ڵ�10�����ۣ����������඼�dz��򵥣�������ڿ���
�������ѵ��������ǵĻ��÷���
431-433ҳ����
����ʹ����Java 1.1 IO�ࡣ
����InputFile�Ĺ�����������һ��String���ִ�����������������򿪵��Ǹ��ļ�
�����֡���һ��try���ڲ������ø��ļ�����һ�� FileReader����FileReader��˵
�����ת�Ʋ�����һ���ܹ�ʵ����֮����̸����BufferedReader�������ûʲô��
����ע��InputFile��һ���ô�������ͬʱ�ϲ����������ж���
��FileReader���������ɹ����ͻ����һ��FileNotFoundException���ļ�δ�ҵ�Υ��
�����뵥���������Υ�����������Dz���ر��ļ���һ�������������Ϊ�ļ���δ
�ɹ��򿪡������κβ���Ӿ䣨catch��������ر��ļ�����Ϊ�ļ����ڽ�����Щ�����
��ʱ�򿪣���Ȼ��������������ܲ���һ��FileNotFoundExceptionΥ�����Ҫ��΢
��һЩ���ɡ���ʱ�����ǿɽ���ͬ������ָ������try���ڣ��� close()����������һ
�����Թ��Υ��ʹ������һ��catch�Ӿ�Ĵ�����ڣ���Υ��Ҳ����Բ��񡪡���J
ava��������˵���Ǹ�catch�Ӿ䲻������һ�Ի����Ŷ��ѡ�ִ���걾�ز�����Υ���
�����¡����������������DZ�Ҫ�ģ���Ϊ�����������ִ���Ѿ�ʧ�ܣ����Dz�ϣ�����
�����������������ȷ�����Լ���Ч��
����������У�û�в���ǰ���ı�־������finally�Ӿ���Ȼ���ǹر��ļ�����ȷ�ط���
��Ϊ�������ÿ�ι����������ʱ��ر�����������ϣ���ļ���InputFile�����ڻ�
��״̬ʱһֱ���ִ�״̬����������������ǡ����
getLine()�����᷵��һ���ִ������а����ļ�����һ�е����ݡ��������readLine(
)�����߿��ܲ���һ��Υ���Ǹ�Υ��ᱻ����ʹ getLine()�����ٲ����κ�Υ��
��Υ����˵��һ���ر����������Ǿ�������һ����ȫ����һ��Υ���ǽ��в��ֿ�
�ƣ���������ͬ����ͬ����Υ�����ֻ�Ǽ򵥵ش��������ʵ���ʱ�򣬼򵥵ش�
�ݿɼ�������ǵı��빤����getLine()�������ɣ�
String getLine() throws IOException {
return in.readLine();
}
���ǵ�Ȼ��������������Ҫ�Կ��ܲ�����κ�IOException���п��ơ�
�û�ʹ�����InputFile����󣬱������cleanup()�������Ա��ͷ���BufferedReader
�Լ�������FileReaderռ�õ�ϵͳ��Դ�����ļ������ע�͢ޡ����InputFile����
ʹ����ϣ����ҵ�����Ҫ��֮���õ�ʱ�򣬷���Ӧ��������ҿ����������Ļ�
������һ��finalize()�����ڣ��������4��ָ�������������ܱ�֤finalize()���
��ȷ�ĵ��ã�����ȷ�������ã�Ҳ��֪����ʱ��ʼ����������Java��һ��ȱ�ݡ�����
�ڴ����֮������������Զ����У����Ա���֪��ͻ�����Ա����������������
��finalize()��֤���������ȷ���С�
�ޣ���C++����ƻ������ɰ����ǿ�����һ���档
��Cleanup.java�У����Ǵ�����һ��InputFile����������ڴ����������ͬ��Դ�ļ�
��ͬʱһ�ζ�ȡ���ļ���һ�����ݣ����������Ӧ���кš�����Υ�����main()�б�
���񡪡��������ǿ�ѡ����Ŀɿ��ԡ�
���ʾ��Ҳ����չʾ��Ϊ���ڱ��������ط�����Υ��ĸ��Υ����Java�ı�̾�
�кܸߵļ��ɶȣ�����Ҫ�����ڱ�������ǿ�����ǡ�ֻ��֪������β�����ЩΥ���
�ɸ��һ�������ձ�������֪ʶ��
9.8 Υ��ƥ��
��������һ��Υ���Υ�����ϵͳ�ᰴ������д��˳����������ӽ�Ŀ�������һ
���ҵ����Ŀ�����������ΪΥ���ѵõ����ƣ����ٽ��и�������������
��Υ�����Ŀ�����֮�䣬������Ҫ�dz���ȷ��ƥ�䡣һ������������������һ
�����������䣬��������ʾ��
435ҳ�ϳ���
SneezeΥ��ᱻ���ĵ�һ��catch�Ӿ䲶�񡣵�Ȼ����ֻ�ǵ�һ����Ȼ���������ɾ
���һ��catch�Ӿ䣺
435ҳ�³���
��ôʣ�µ�catch�Ӿ���Ȼ�ܹ���������Ϊ������Sneeze�Ļ��ࡣ����֮��catch
(Annoyance e)�ܲ���һ��Annoyance�Լ�����������κ��ࡣ��һ��dz���Ҫ����Ϊһ
�����Ǿ���Ϊһ��������Ӹ���Υ��������Ƕ��Ǵ���ͬ�Ļ���̳еģ���ô��
������Ա�Ĵ���Ͳ���Ҫ��ġ������ܹ��ٶ����Dz�����ǻ��ࡣ
�������ಶ��Ӿ����ڵ�һλ����ͼ�����Ρ�������Υ�������������
436ҳ�ϳ���
������������һ��������Ϣ����Ϊ������Զ�����ִܵ�Sneeze����Ӿ䡣
9.8.1 Υ��׼��
��Υ����������Щ���飺
(1) ������Ⲣ�ٴε������Υ��ķ�����
(2) ƽϢ��̬�ķ�չ�����ڲ����³��Է�����ǰ���¼���
(3) ������һЩ������ϣ������Ľ��
(4) �ڵ�ǰ�����о����ܽ�����⣬�Լ�����ͬ��Υ�����¡�������һ����߼��Ļ���
��
(5) �ڵ�ǰ�����о����ܽ�����⣬�Լ�����ͬ��Υ�����¡�������һ����߼��Ļ���
��
(6) ��ֹ����ִ�С�
(7) �򻯱��롣��Υ��ʹ�����ø�Ӹ��ӣ��Ǿͻ����˷dz����գ����粻�á�
(8) ʹ�Լ��Ŀ�ͳ����ø�Ӱ�ȫ�������һ�֡�����Ͷ�ʡ������ڵ��ԣ���Ҳ��һ
�֡�����Ͷ�ʡ�������Ӧ�ó���Ľ�׳�ԣ�
9.9 �ܽ�
ͨ���Ƚ�Ĵ��������ָ����ƣ����ǿ�����Ч����ǿ����Ľ�׳�̶ȡ������DZ�д��
ÿ��������˵������ָ�������һ����Ŀ���Ŀ�ꡣ����Java���Ե���Ϊ��Ҫ����Ϊ
�����Ե�һ��Ŀ����Ǵ�����ͬ�ij���������Ա������û����ͻ�����Ա��ʹ�á�Ϊ��
��һ�׽�׳��ϵͳ��ÿ�����������dz���׳��
��Java�Υ����Ƶ�Ŀ����ʹ�þ����ܾ���Ĵ��봴�����͡��ɿ���Ӧ�ó���ͬʱ
�ų��������Щ���ܿ��ƵĴ���
Υ��ĸ���������ա���ֻ�кܺõ�������ſ�ʹ�Լ�����Ŀ���������������档
Javaǿ������
--
   j&=   y+ y*    jv+   yy-v    v &
  wE!"   j17$T   7MPC   NU$E-   Ej&v-
  O*K^  yHH:Ovm+ UMMk   BMNTO: H1="7'
 jO&OH: "OH&"E~  U0H1   BB71` jCf'U:
 vM1H1   jB-j1  wHhHh*-/$B)B-   BkJUk
 ^HI'OH j""^N1  "OHOK~  H$H"Da jP'N ^
�� ��Դ:���ɽ��ˮ bbs.neu.edu.cn��[FROM: 219.216.70.3]
Technical Details
Message-ID: <492eAg$Bus@bbs.neu.edu.cn>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!elnk-pas-nf1!elnk-nf2-pas!newsfeed.earthlink.net!sjc70.webusenet.com!news.webusenet.com!news.neu.edu.cn!NEU

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: f6cb0,faac8e197cb52d8a,start
X-Google-Attributes: gidf6cb0,public
X-Google-ArrivalTime: 2003-10-27 17:46:16 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!elnk-pas-nf1!elnk-nf2-pas!newsfeed.earthlink.net!sjc70.webusenet.com!news.webusenet.com!news.neu.edu.cn!NEU
From: amou.bbs@bbs.neu.edu.cn (�˺�2��)
Newsgroups: cn.bbs.comp.lang.java
Subject: Java���˼��---��9�� Υ�������
Date: 28 Oct 2003 01:45:05 GMT
Organization: ��ɽ��ˮ
Message-ID: <492eAg$Bus@bbs.neu.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: java/M.1067305482.A
Lines: 536