为何提示:未报告的异常 java.lang.Exception;必须对其进行捕捉或声明以便抛出?????

liang8821 2008-04-09 08:54:13
class Dijkstra
{ static final int MaxWeight=32767;
public void dijkstra(MGraph g,int v0,int path[],int dist[],int s[])throws Exception
{
int mindis,i,j,u,n=g.getVexnum();u=0;
for(i=0;i<n;i++)
{ dist[i]=g.getEdges(v0,i);
s[i]=0;
if(i!=v0&&g.getEdges(v0,i)<MaxWeight)
path[i]=v0;
else
path[i]=-1;
}
s[v0]=1;
for(i=1;i<n;i++)
{ mindis=MaxWeight;
for(j=0;j<n;j++)
{if(s[j]==0&&dist[j]<mindis)
{ u = j;
mindis = dist[j];
}
}
if(mindis==MaxWeight) return;
s[u]=1;
for(j=0;j<n;j++)
{if(s[j]==0)
if(g.getEdges(u,j)<MaxWeight && dist[u]+g.getEdges(u, j)<dist[j])
{ dist[j]=dist[u]+g.getEdges(u,j);
path[j]=u;
}

}
}
}
}
主方法中的调用为:
Dijkstra dij=new Dijkstra();
dij.dijkstra(g,m,Path,distance,s);
编译时提示:未报告的异常 java.lang.Exception;必须对其进行捕捉或声明以便抛出
dij.dijkstra(g,m,Path,distance,s);
^
...全文
4016 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
llpgy 2008-04-10
  • 打赏
  • 举报
回复
edges是啥??
tanlijun37 2008-04-09
  • 打赏
  • 举报
回复
此种错误用eclipse一编译,就会提示你,然后根据提示就能解决了。
wenbo234 2008-04-09
  • 打赏
  • 举报
回复
用try catch围绕抛出异常的方法 或在方法定义后throws异常都可以
AwL_1124 2008-04-09
  • 打赏
  • 举报
回复
学习了。。。
yuanjun_xf 2008-04-09
  • 打赏
  • 举报
回复
try catch
AwL_1124 2008-04-09
  • 打赏
  • 举报
回复
学习了
liang8821 2008-04-09
  • 打赏
  • 举报
回复
g我也已经初始化啦
zzkk_1980 2008-04-09
  • 打赏
  • 举报
回复
public static void main(String[] args) throws Exception
moonlighter 2008-04-09
  • 打赏
  • 举报
回复
在main()中:
Dijkstra dij=new Dijkstra();
try
{
dij.dijkstra(g,m,Path,distance,s);
}
catch(Exception e)
{
...
}
ee4456 2008-04-09
  • 打赏
  • 举报
回复
你没有主动去捕捉异常,而某个异常是被throw给你的,在你代码中必须捕捉这个异常或者抛出这个异常
解决办法:
1try catch去捕捉
2在函数体throws Exception,把异常继续抛出
caiming250 2008-04-09
  • 打赏
  • 举报
回复
我想你以前可能 没有接触过 java 的异常 java的 app异常 是需要 用 try catch 语句来捕捉的! 这点不同于 c/c++ 语言 !
caiming250 2008-04-09
  • 打赏
  • 举报
回复
你把你的 主方法 写成这样 public static void main(String[] args) throws Exception{//TODO you operation}
liang8821 2008-04-09
  • 打赏
  • 举报
回复
我在MGraph类中声明下面的get方法 :
public int getWeight(int v1,int v2)throws Exception
{
if(v1<0||v1>=vexnum||v2<0||v2>=vexnum)throw new Exception("顶点越界!!");
return edges[v1][v2];
}
在另一个类中调用:
public static void dijkstra(MGraph g,int v0,int path[],int dist[],int s[])throws Exception
{
int mindis,i,j,u,n=g.getVexnum();
for(i=0;i<n;i++)
{ dist[i]=g.getWeight(v0,i);
s[i]=0;
if(i!=v0&&g.getWeight(v0,i)<MaxWeight)
path[i]=v0;
else
path[i]=-1;
}
在主函数调用此方法dijkstra(g,m,Path,distance,s);
运行提示 Exceptin in thread “main”java.lang.NullPointerException
at MGraph.getWeight
at dijkstra

这是为啥?急!!!!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧