怎么就java空指针异常处理了

查看:2357|回复:8
程序功能:新建两个直线的对象和一个圆的对象,将对象保存入二进制文件中,再从文件中读取出来,将直线和圆画到Frame面板上
代码:import java.io.*;
import java.awt.*;
import java.awt.event.*;
abstract class Graph implements Serializable
& & public abstract void draw(Graphics g);
class Line extends Graph
& & int x1, y1, x2, y2;
& & public void draw(Graphics g)
& && &&&g.drawLine(x1, y1, x2, y2);
& & public Line(int x1, int y1, int x2, int y2)
& && &&&this.x1 = x1;
& && &&&this.y1 = y1;
& && &&&this.x2 = x2;
& && &&&this.y2 = y2;
class Circle extends Graph
& & int x,
& & public void draw(Graphics g)
& && &&&g.drawOval(x, y, r, r);
& & public Circle(int x, int y, int r)
& && &&&this.x =
& && &&&this.y =
& && &&&this.r =
public class Main extends Frame
& & public static void main(String args[])
& && &&&Line k1 = new Line(60, 90, 140, 90);
& && &&&Line k3 = new Line(100, 50, 100, 130);
& && &&&Circle k2 = new Circle(60, 50, 80);
& && &&&try
& && && && &FileOutputStream fout = new FileOutputStream(&storedate.dat&);
& && && && &ObjectOutputStream out = new ObjectOutputStream(fout);
& && && && &out.writeObject(k1);
& && && && &out.writeObject(k2);
& && && && &out.writeObject(k3);
& && &&&catch (IOException e)
& && && && &System.out.println(e);
& && &&&new Main();
& & public Main()
& && &&&super(&对象串行化&);
& && &&&this.addWindowListener(new WindowAdapter()
& && && && &public void windowClosing(WindowEvent e)
& && && && &{
& && && && && & Window window = e.getWindow();
& && && && && & window.dispose();
& && && && &}
& && &&&});
& && &&&setSize();
& && &&&Graphics g = getGraphics();
& && &&&try
& && && && &FileInputStream fin = new FileInputStream(&storedate.dat&);
& && && && &ObjectInputStream in = new ObjectInputStream(fin);
& && && && &for (int i = 1; i &= 3; i++)
& && && && &{
& && && && && & Graph me = (Graph) in.readObject();
& && && && && & me.draw(g);
& && && && && & System.out.println(me);//验证输出
& && && && &}
& && &&&catch (IOException e)
& && && && &System.out.println(e);
& && &&&catch (ClassNotFoundException e)
& && && && &System.out.println(e);
& && &&&catch(NullPointerException e){System.out.println(&空指针异常&);}
& && &&&setVisible(true);
本帖最后由 yuke198907 于
11:33 编辑
引用:原帖由 yuke198907 于
20:46 发表
异常信息呢? 忘了发了:
Exception in thread &main& java.lang.NullPointerException
& && &&&at Line.draw(Main.java:13)
& && &&&at Main.&init&(Main.java:79)
& && &&&at Main.main(Main.java:57)
Java Result: 1
成功生成(总时间:3 秒)
引用:原帖由 狂盗一枝梅 于
21:05 发表
忘了发了:
Exception in thread &main& java.lang.NullPointerException
& && &&&at Line.draw(Main.java:13)
& && &&&at Main.(Main.java:79)
& && &&&at Main.main(Main.java:57)
Java Result: 1
成功生成(总 ... 以上的程序代码我用了try catch语句捕捉到了这个异常,所以程序还能显示出来窗体
问题出在这一句:Graphics g = getGraphics();
g获得的是null,即空值。
引用:原帖由 aaaaaqiwang 于
23:38 发表
问题出在这一句:Graphics g = getGraphics();
g获得的是null,即空值。 为什么会是空值呢?我回去检查了这个问题,g真的是null,我该怎么修改?求指教
引用:原帖由 aaaaaqiwang 于
23:38 发表
问题出在这一句:Graphics g = getGraphics();
g获得的是null,即空值。 这里的g是引用了Frame的画笔,Frame的画笔为什么会是null呢?
引用:原帖由 狂盗一枝梅 于
12:46 发表
这里的g是引用了Frame的画笔,Frame的画笔为什么会是null呢? 因为在使用这个方法之前,必须先把组建设置为可见的,即你要把setVisible(true);这句话提到Graphics g = getGraphics();前面。
引用:原帖由 aaaaaqiwang 于
16:16 发表
因为在使用这个方法之前,必须先把组建设置为可见的,即你要把setVisible(true);这句话提到Graphics g = getGraphics();前面。 真的可以了,太感谢你了,谢谢!!!!!!!
小洋(on my way)
给你编辑了下代码,下次记得用[code=&java&][/code]标签嵌套你的代码,这样就可以高亮显示了
51CTOjava板块讨论QQ群:【1000人群】2群:【可加】 & && && &欢迎热爱JAVA的来讨论^_^
我的个人网站--&您还可以使用以下方式登录
当前位置:&>&&>& > 空指针什么意思?
空指针异常 空指针什么意思?
相关解答一:什么叫空指针,怎么定义空指针 指向空地址的指针.类型 *指针=NULL;如:int *p=NULL;相关解答二:空指针异常 你已经揭示了错误的原因了啊:空指针异常解释应该是,空值调用方法时,返回空指针异常,你的第五行 i 的值是null,而且参加了第五行表达式的运算,根据装箱和拆箱的逻辑,第五行代码等价于:x = (i+y).intValue();而i.intValue();就直接导致了空指针异常,一个null的对象怎么可能去intValue();所以肯定会错啊。这里的确涉及到自动拆箱的思想。祝你好运希望能够帮到你相关解答三:如何防止空指针 我还是第一次听说用try catch来处理空指针的异常的呢!把你感觉会出现空对象的地方都加上判断语句,这样可以有效的降低空指针异常的出现,即使你知道他不可能出现空的情况。这是一种很好的变成习惯,这么做感觉是不是很多此一举,明明知道他不可能出现空的情况还要加上。这么做的原因就常告诉自己你已经对空的情况做出了处理。他也带来了代码的健壮性。如果你确实保证这个对象不可能出现空的情况,好,你可以使用断言,来对一些异常进行处理,不过断言技术用在测试时期,到项目发布的时候,你还要去掉断言语句。总之,对于空指针一定不要try catch,或用判断,或用断言,但是一定不要try catch。相关解答四:空指针异常 异常分析Exception in thread "main" java.lang.NullPointerExceptionat java.util.Properties$LineReader.readLine(Unknown Source)at java.util.Properties.load0(Unknown Source)at java.util.Properties.load(Unknown Source)Unknown Source : 资源无法访问InputStream in = PropretiesTest.class.getClassLoader(). getResourceAsStream("a.txt");加载当前类所在目录下的a.txt文件到niputStream流中那么这个 a.txt 文件必须要在src目录下存在或者在项目目录\bin\classes 目录下存在也可,因为.java文件都是要先编译成.class文件的相关解答五:空指针有什么作用? 逻辑上表示不指向任何内存,一般可用于超越现有值域的表示;比方说你写一个求根函数,如果别人给你一个负数,负数开方无意义,你的函数返回任何数值都会被误解为已经计算出一个合法值,如果你返回的是一个指针,她除了指向有效值外还可以指向空指针;当然解决这一问题的方法有很多,比如浮点数表示中存在表示无效值、无穷大之类的特殊位模式,比如用抛出异常或多返回一个值的,又或者返回引用等等。相关解答六:空指针可以赋值吗? 给空指针指向的地址赋值是错的,程序会崩溃。如int *q=NULL;
*q=*(p+5)会死机。如果你给q指向的地址赋值都是错的,如*q=但是q本身是个变量,你给q本身赋值是没有问题的,像这样: q =看下关于指针这章的书,你就会明白相关解答七:二叉树指针域和空指针域 二叉树指针域是指向指针的指针
也就是直接存一个指针的地址,而空指针是指没有赋予值的穿针
也就是没有指向地址的指针相关解答八:c语言,空指针,野指针,通用指针 野指针就是不知道指向哪里,或者说不知道指向的内存是否可以使用,一般都是刚刚声明但没有初始化的指针。空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针,这样很危险,但如果养成将指针初始化为空指针的习惯,我们就能判断出这个指针是不是有效的(判断是不是NULL就可以了)通用指针一般都用在函数传参,实现所谓的“多态”,但到函数里面使用时,一般还是被转换成具体类型的指针。相关解答九:判断指针是否为空 C++之父的C++圣经《C++程序设计语言 特别版》中说:大家不要听某些人说用(p==NULL)或(p!=NULL)的格式,C++之父认为这样写是不好的,提倡直接写(p)或(!p)的形式。在win32开发中,if ( NULL == p )是极好的写法。但不要写成:if ( p == NULL )C++之父主要是反对使用“NULL”,因为在某些特殊的开发环境叫,“NULL”并非补定义成地址0,也可能是一个跟平台相关的,用于标记非法地址的其它地址。但按照C++标准的规定,只有等于0的地址可以被随便delete多次,因此如果是别的地址,那至少C++标准就给不了任何说法。至于是if(p == 0)和if(p !=不过,从代码的可扩展性上讲,写成后者可能好一些,因为如果有一天你决定改用一些原生指针的包装类(比如类似那种auto_ptr模板的)来代替直接操作原生指针,而那个类可能重载了operator!,后者可能让你直接利用这些设施林锐提倡if ( p == NULL)是从代码的可读性上考虑的,一看就是在判断一个指针,而不是判断一个bool值,它提倡只有bool值才使用if(p)或者if(!p)的形式。BS是从可移植方面考虑。if( p == NULL另外,不要写成if( p == NULL )这样的形式,应该写成:if ( NULL== p )。如果你误写成了if ( NULL = p相关解答十:需要判断指针为空吗 我的观点是:只要有可能为空的,就一定要判断是否为空; 不可能为空的,可以用一个assert断言来表达。关键在于判断是否有可能为空。由函数调用者保证不为空的,就认为不可能为空,可在函数说明中注释并在函数开始处加个断言。由进程以外输入决定的,如用户输入,文件输入,或其他进程传入数据决定的指针,即使外部接口规定了不会造成空指针,但仍应该对输入判断。外部输入错误不应该造成程序错误。百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆
欢迎转载:
推荐:    2016年12月 Java大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 空指针异常怎么解决 的文章

 

随机推荐