比如:你写了两个函数:
A、解析文件内容的函数(比如提取文件内容中的特定字符串)
B、打开文件,并且读取文件内容的函数
A
函数
调用
B函数,对于文件不存在这样的异常,B函数中直接将异常向上一级抛出即可,因为出现了这样的异常,需要通知上一级函数。
感觉大部分应用中,直接将异常向上抛出是比较合理的,因为出异常的时候,上一级函数会发现,并且会在编码时做相应的处理。
2、如果在实际项目中,main函数也直接将异常抛出,这个程序就不够好了,因为用户可能直接会看到这个出现的异常。
File[]childs
=
f.listFiles()
//listFiles()返回目录下的所有文件这句下面加上if(childs!=null){
for(){
}}如果传入的那个目录是不存在的话,childs就是null的,所以会报错
这是一个简单的目录树啊,,,你图片中的设计就是答案了呀生成树的话只要把所有的记录全部查出来, 然后用递归的方法来判断 子菜单的ID 与主菜单的ID关联
给你个参考 我是把目录树生成成XML,,原理一模一样,,,我的表结构设计的也跟你完全相同
public StringBuffer initXml() throws FunctionsXmlTreeException {
strXml.append("<?xml version='1.0' encoding='utf-8'?>\n"
+ "<tree id='0'>")
try {
strXml.append(createTree(funs))
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace()
throw (new FunctionsXmlTreeException("生成功能目录数时出现错误!"))
}
strXml.append("</tree>")
return strXml
}
private String createTree(List<Functions>funlist) throws Exception {
StringBuffer xml = new StringBuffer()
for (Functions fun : funlist) {
xml.append("<item text='" + fun.getFunname() + "' id='"
+ fun.getFunid() + "' open='1'>\n")
if (null != fun.getFuns()) {
xml.append(createTree(fun.getFuns()))
}
xml.append("</item>\n")
}
return xml.toString()
}