[問題]java jersey webservice如何補捉Exception

看板java作者時間10年前 (2015/11/16 16:38), 10年前編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
各位好: 小弟目前使用 Jersey 開發Webservice。目前遇到一些困難,想請各位前輩幫個忙。 這個問題是如何在Jersey web api 內 補捉調用物件的Excepiton並回傳給Client。 以下是開發環境: (1)作業系統:Windows XP (2)開發工具:Eclipse Java EE IDE for Web Developers (3)JAVA版本:jdk 1.6.0.45 (4)Jersey API 版本:1.9 (5)資料庫:Oracle 11g -------------------------------------------------------- 以下是程式碼: public class oracle { DataSource dataSource = DataSourcePolling.getDataSource(); public void InsertNewTransFrom(on_shift shift ){ Connection con =null; Statement state =null; try{ StringBuilder sql = new StringBuilder(); sql.append("insert into \"on_shift\" "); sql.append("(\"shnumber\",\"receiver\",\"taker\",\"trandate\",\"schedule\")"); sql.append("values"); sql.append("('"+shift.getShnumber()+"','"+shift.getReceiver()+"','"+shift.getTaker()+"','"+shift.getTrandate()+"','"+shift.getSchedule()+"'"); sql.append(")"); con=dataSource.getConnection(); state = con.createStatement(); state.executeUpdate(sql.toString()); state.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } } } /* 上述oracle class 只節錄一部分的程式碼上來。 本class的主要功能是提供給WebService調用。WebService收集到的 前端資料會調用本class對資料庫的新增、查詢、修改等功能。 */ public class MailSent extends NotesThread{ public MailSent(String pwd,String attche,String NameNsf,String subject,String sent,String name){ } public void runNotes(){ try{ } catch(NotesException e){ } catch(NoClassDefFoundError e){ } } } /* MailSent class只節錄部分程式碼。 本class的主要功能是提供給WebService調用。當WebService要使用寄信的 功能時會調用本class。 */ -------------------------------------------------------------------------- @Path("/transform") public class trans { oracle oa = new oracle(); ObjectMapper mapper = new ObjectMapper(); @POST @Path("/add/transform") public Response transFormNew(@FormParam("receiver") String receiver,@FormParam("taker") String taker ,@FormParam("trandate") String trandate,@FormParam("schedule") String schedule{ on_shift shift = new on_shift(); shift.setReceiver(receiver); shift.setTaker(taker); shift.setTrandate(trandate); shift.setSchedule(schedule); oa.InsertNewTransFrom(shift); //調用oracle class的資料庫新增功能 MailSent mailSend = new MailSent(pwd,attch,NameNsf,Subject,hander,name); mailSend.start(); //調用MailSent class的寄信功能 } /* 上述 transFormNew function web api 主要功能是新增一張單子, 並在新增完畢之後寄信給相關負責人。 */ } ----------------------------------------------------------------------------------------------------------------- 小弟的問題如下: 在 transFormNew web api 下調用 oracle class的 InsertNewTransFrom 的方法 和 MailSent 物件時 若發生了例外,如SQLException 或 NotesException,那麼如何 在 web api 內 補捉這些例外並把這些例外訊息回傳給client ? -- 陰律無情!是的,犯邪淫者,小如手淫、婚前性行為 均會遭折福減壽之惡報。國考者更不能犯淫邪, 否則文昌帝君會除去功名,不信請看此懺悔文: http://lustwarn.blogspot.tw/ 陰律無情!是的,犯邪淫者,若不懺悔發心改過永不再犯, 死後必入邪淫地獄,不信請看;http://goo.gl/tchBZY -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.185.7.126 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1447663086.A.04A.html ※ 編輯: u9423504 (113.185.7.126), 11/16/2015 16:47:34 ※ 編輯: u9423504 (113.185.7.126), 11/16/2015 16:52:20

11/16 16:58, , 1F
首先你底層物件要把exception throw出來,你都catch了外層
11/16 16:58, 1F

11/16 17:01, , 2F
就不知道了,再來看你是要在transFormNew接住產生Response
11/16 17:01, 2F

11/16 17:02, , 3F
還是用jersey的例外處理機制去定義處理方法
11/16 17:02, 3F

11/18 21:32, , 4F
要看你Exception出來的結果要去處理什麼再去定義實作方式
11/18 21:32, 4F
文章代碼(AID): #1MIPNk1A (java)