1. 程式人生 > >Hibernate 常見異常處理(轉帖)

Hibernate 常見異常處理(轉帖)

Hibernate 常見異常
net.sf.hibernate.MappingException
       當出現net.sf.hibernate.MappingException: Error reading resource:…異常時一般是因為對映文
件出現錯誤。

       當出現net.sf.hibernate.MappingException: Resource: … not found是因為XML配置檔案沒找到所致,有可能是放置目錄不正確,或者沒將其加入hibernate.cfg.xml中。

2. net.sf.hibernate.PropertyNotFoundException
       當出現net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property
name in class …時,原因一般是因為XML對映檔案中的屬性與對應的Java類中的屬性的getter或setter方法不一致。

3. org.hibernate.id.IdentifierGenerationException
       當出現org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():異常時,一般是因為<id>元素配置不正確,<id>元素缺少其子元素<generator></generator>的配置引起。

       解決方案:<id>元素映射了相應資料庫表的主鍵欄位,對其子元素<generator class="">,其中class
的取值可以為increment、identity、sequence、hilo、native……等,更多的可參考hibernate參考文件,一般取其值為native 。具體可參考2.2.2.1小節。

4. a different object with the same identifier value was already associated with the session
       當出現a different object with the same identifier value was already associated with the

session時,一般是因為在hibernate中同一個session裡面有了兩個相同標識但是是不同實體。

       有如下幾種解決方案:

(1)使用session.clean(),如果在clean操作後面又進行了saveOrUpdate(object)等改變資料狀態的操作,有可能會報出"Found two representations of same collection"異常。

(2)使用session.refresh(object),當object不是資料庫中已有資料的物件的時候,不能使用
session.refresh(object)因為該方法是從hibernate的session中去重新取object,如果session中沒有這個物件,則會報錯所以當你使用saveOrUpdate(object)之前還需要判斷一下。

(3)session.merge(object),Hibernate裡面自帶的方法,推薦使用。

再次碰到:a different object with the same identifier value was already associated with the
session這個錯誤我一共遇到過兩次,一直沒有找到很好的解決方案,這個錯誤產生原因相信大家都知道,因為在hibernate中同一個session裡面有了兩個相同標識但是是不同實體.
一開始按網上說的用session.merge(Object)報了一個錯,可能是沒有用好,改用 session.clear();

session.update(user);這樣就OK了,
方法為:

package org.springframework.orm.hibernate3.support;
...
    public void modifyByMerge(User user) {
        Session session = getHibernateTemplate().getSessionFactory().
                          getCurrentSession();
        session.clear();
        session.update(user);
    }
...
專案用的是spring + hibernate所以得用getHibernateTemplate().getSessionFactory

().getCurrentSession();得當前Session

5. SQL Grammer Exception,Could not execute JDBC batch update
       當出現SQL Grammer Exception,Could not execute JDBC batch update異常時,一般是由如下問題

引起:

(1)SQL語句中存在語法錯誤或是傳入的資料有誤;

(2)資料庫的配置不合法,或者說是配置有誤。較容易出現的有資料表的對映檔案(,hbm.xml檔案)配置有誤

;Hibernate.cfg.xml檔案配置有誤;

(3) 當前的資料庫使用者許可權不足,不能操作資料庫。以是以Oracle 資料庫為例,這種情況下在錯誤提示中

會顯示java.sql.BatchUpdateException: ORA-01031: insufficient privileges這樣的資訊。

       針對上面的各種原因,開發人員可以找出對應的解決方案。
 

16.net.sf.hibernate.QueryException: undefined alias:我猜想出項這種錯誤的原因有很多種:可能是大小寫問題,還有其他很多種可能
17.net.sf.hibernate.NonUniqueResultException:檢索單個物件時,查詢結果包含多個物件,但沒有呼叫

setMaxResult(1)方法
18.net.sf.hibernate.QueryException: Not all named parameters have been set
使用setProperties()方法:用於把命名引數與一個物件的屬性值繫結時,物件中沒有匹配的名字相同的屬
性。

文章出處:http://www.diybl.com/course/3_program/java/javashl/2008410/108844_2.html

===========================

1 .Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF-8 sequence. Nested

exception: Invalid byte 2 of 2-byte UTF-8 sequence.

如果出現這行錯誤說明你的XML配置檔案有不規範的字元,檢查下。

2 .net.sf.hibernate.MappingException: Error reading resource: hibernate/Hello_Bean.hbm.xml

如果出現這行錯誤說明你的hibernate的XML配置檔案有錯

3 .net.sf.hibernate.MappingException: Resource: hibernate/Hello_Bean.hbm.xml not found

如果出現這行錯誤說明hibernate的XML配置檔案沒有找到,你應該把XML檔案放在與你的類檔案同個目錄下,

本文中是放在hibernate/classes/hibernate/目錄下,也就是跟Hello_Bean.class類檔案一起。

4 .net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean

如果出現這行錯誤說明你的xml檔案裡設定的欄位名name的值與Hello_Bean.Java類裡的getXXX或setXXX方法不一致。

5 .net.sf.hibernate.HibernateException: JDBC Driver class not found: org.gjt.mm.mysql.Driver

6.The database returned no natively generated identity value 。      主鍵沒有新增增量

===========================

Exception : No form found under 'loginForm' in locale 'en_US'

這個錯誤完全是我自己給自己找麻煩,我在給loginForm做表單驗證時,用了validator,我在寫

validation.xml檔案時,突然發神經,想寫得比較國際化一點,這樣寫的:

   <formset language="zh" country="CN"> <!--這個是zh_CN的-->

   開始是一點問題都沒有,因為我們大家一般都用中文系統,後來有一天我用linux,當時環境是english,

結果發現頁面就報錯:No form found under 'loginForm' in locale 'en_US'。

當時,特別鬱悶,後來仔細回憶,想起當時只在validation.xml檔案裡顯式的寫過國際化相關的東西,後來

就把 language="zh" country="CN" 給刪掉了。即:
<formset>。。。。。。</formset>

再用英文系統訪問就沒有事情了,看來你要是想國際化,就把所有的情況的配置都寫全了,不要只指定中文

的配置,英文的不配置,那樣,別人用英文系統的人就會出錯。所以,建議還是不要制定國際化,看來有的

時候還是偷懶一點比較好!

===========================

Hibernate錯誤:org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1

原因多半是你的mapping檔案的主鍵沒有設定對。檢查如下:

一:看你的主鍵型別是什麼?如果是long,int等,記得設定unsaved-value="0"

二:如果是string 的話,請設定unsaved-value="null"

注意unsaved-value是個很重要的屬性。Hibernate通過這個屬性來判斷一個物件應該save還是update,如果這個物件的id是unsaved-value的話,那說明這個物件不是 persistence object要save(insert);如果id是非unsaved-value的話,那說明這個物件是persistence object(資料庫中已存在),只要update就行了。

你可以Debug跟一下你的程式碼,看看在 session.update(obj); 的時候,obj的主鍵的值是不是按你定義的那
樣,obj可以被hibernate認為是一個已經持久化在資料庫裡的物件

===========================================================

java.lang.NoClassDefFoundError: antlr/ANTLRException

原因是:缺少antlr-2.7.5H3.jar

---------------------------------------2----------------------------------------------

類 java.lang.NoSuchMethodError

java.lang.Object

   |

   +----java.lang.Throwable

           |

           +----java.lang.Error

                   |

                   +----java.lang.LinkageError

                           |

                           +----java.lang.IncompatibleClassChangeError

                                   |

                                   +----java.lang.NoSuchMethodError

public class NoSuchMethodError

extends IncompatibleClassChangeError

如果應用程式試圖呼叫一個類的指定方法(無論是靜態還是動態),但是該類不再有該方法的定義,則丟擲該

異常。

通常由編譯器檢測此錯誤;如果類定義不允許再作相容性的改變,那麼此錯誤只可能發生在執行時刻。

構造子索引

NoSuchMethodError()

NoSuchMethodError(String)

    用指定的詳細資訊構造 NoSuchMethodException。

構造子

NoSuchMethodError

public NoSuchMethodError()

NoSuchMethodError

public NoSuchMethodError(String s)

    用指定的詳細資訊構造 NoSuchMethodException。

    引數:

        s - 詳細資訊。

----------------------------------3--------------------------------------------------

今天用hibernate3做關係對映,當呼叫對映類的時候總是報

org.hibernate.LazyInitializationException: could not initialize proxy錯誤

原因:

hb3對many-to-one的預設處理是lazy = "proxy" 而hb2是false

所以,要這麼設定

        <many-to-one name="shop_type" column="sort_id" class="liubi.ShopType"

cascade="all" outer-join="true" lazy="false" />

------------------------------------4--------------------------------------------------

java.sql.Timestamp異常

     原因:時間date錯誤

     更改時間java.util.Date 為java.lang.String就好了,同時修改配置檔案中的內容

------------------------------------5--------------------------------------------------

Cannot find bean in any scope

分類:Struts異常

1.出現這種錯誤一般是資原始檔沒找到或是資原始檔裡沒有對應的key值。

2.struts-config.xml裡的Action配置裡把redirect設定為了true;改成false,

3.在Action裡一般會request.setAttribute()一些物件,然後在轉向的jsp檔案裡

(用tag或 request.getAttribute()方法)得到這些物件並顯示出來。

這個異常是說jsp要得到一個物件,

但前面的Action裡並沒有將物件設定到request(也可以是session、servletContext)裡。

可能是名字錯了,請檢查jsp裡的tag的一般是name屬性,或getAttribute()方法的引數值;

或者是Action邏輯有問題沒有執行setAttribute()方法就先轉向了。

還有另外一個可能,純粹是jsp檔案的問題,例如<logic:iterate>會指定一個id值,

然後在迴圈裡<bean:write>使用這個值作為name的值,如果這兩個值不同,

也會出現此異常。(都是一個道理,request裡沒有對應的物件。)

4.這個情況比較特殊,應該算沒有把STRUTS標記庫的機制搞明白,

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

如果沒有在頭宣告這個就用logic:iterate標記,

在bean:write的時候就會出異常!

---------------------------------6----------------------------------------------------

HibernateException: Not able to obtain connection

org.hibernate.HibernateException: Not able to obtain connection

差不多等於沒有連線資料庫了。要保證Hibernate的Session工廠能正常工作。

這個一般我們的做法是Session工廠設定成靜態的。

然後需要進行操作就開啟一個會話。所以在設計的時候注意一下。這個Session工廠物件。

最好是放在

static{}塊裡。然後用個抽象類去實現它,然後其他的類都實現這個抽象類就搞定了!

---------------------------------7----------------------------------------------------

org.hibernate.MappingException: Error reading resource: XXXX.XML

這個異常出現的報錯還有:

Could not configure datastore from input stream

org.dom4j.DocumentException: xxxxx(系統找不到指定的檔案。) Nested exception: xxxx

org.hibernate.MappingException: Error reading resource: xxxx

這個異常主要出現的情況有:

(1)沒有對映檔案,也就是沒有xxx.hbm.xml

(2)在xxx.hbm.xml檔案中有錯誤,主要可能是書寫錯誤,或有亂碼

(3) 這個問題最噁心,一般人不會注意到,就是要注意配置檔案和對映檔案都必須用同一個版本的HIBERNATE

,怎麼看是否用同一個HIBERNATE呢,你可以檢視hibernate.cfg.xml和xxx.hbm.xml開頭內容:

例如

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

如果一個是2.0一個是3.0到時候DOM4J就會出異常。解析不了咯!

---------------------------------------8-----------------------------------------------

save the transient instance before flushing

1.

(1)做Hibernate多對一的時候,報錯:

org.apache.jasper.JasperException: Error creating bean with name 'sf' defined in ServletContext

resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is

org.hibernate.PropertyNotFoundException: Could not find a getter for person in class

com.accp.vo.Course

因為配置檔案中的一個 <many-to-one name="person" ../> 中的person屬性名稱寫錯了.

還有原因如下:

    1)getter()方法寫錯了,沒有按照javaBean的規則寫.

    2)*.hmb.xml中的屬性名和pojo中的是否一致.注意:屬性名是否多了空格.

(2).Hibernate多對一報錯:

save the transient instance before flushing

具體錯誤為在one-to-many中,對many進行save時,由於沒有加入one的外建,導致錯誤。

具體解決方法:

(1)、在one的hbm檔案中 invest=true

(2)、在many儲存前務必要求one的存在

---------------------------------------9-----------------------------------------------

Named query not known

在使用session.getNamedQuery("XXX");執行HQL語句的時候,沒有找 XXX語句,這主要是2個原因

1:粗心,把名給寫錯了

2:XXX的HQL語句所在的.hbm.xml沒有在hibernate.cfg.xml裡註冊過!

---------------------------------------10----------------------------------------------

Expected positional parameter count: X, actual parameters:

org.hibernate.QueryException: Expected positional parameter count: 2, actual parameters: []

[SELECT * from Ad where gr_id = ? and adst_id = ?]

這樣的異常主要原因是:

//以下為例子

Query query =session.getNamedQuery("OnlienAd");

   query.setParameter(0,gray.getId());

   query.setParameter(1,Globals.UPED_STATE);

可以看到query.setParameter()設定了位,也可以理解成他在要執行的HQL語句中佔了2個位置。

然後執行的時候會對應HQL裡的?中去。

如果你並沒有setParameter(),但你的HQL裡卻有?那麼就會出這個異常。

---------------------------------------11---------------------------------------------

org.hibernate.MappingException: Association references:XXX

---------------------------------------12---------------------------------------------

org.hibernate.exception.SQLGrammarException: could not initialize

無法例項集合。

這個是問題在你當前的實體中有一個一對多需例項的物件。但這個物件卻無法例項出來,說明一對多那個多

的一方實體有問題,多數情況可能有:

1、資料庫該動過但程式碼沒動

2、實體程式碼有錯誤

---------------------------------------13---------------------------------------------

org.hibernate.id.IdentifierGenerationException

異常資訊:org.hibernate.id.IdentifierGenerationException: ids for this class must be manually

assigned before calling save():

異常原因:

<id>元素配置不正確,

<id>元素缺少其子元素<generator></generator>的配置。

解決方法:<id>元素映射了相應資料庫表的主鍵欄位,對其子元素<generator class="">,其中class的取值

可以為increment、identity、sequence、hilo、native...... 等,更多的可參考hibernate參考文件,一般

取其值為native 。

MySQL:identity,increment,hilo,native.

SQL Server:identity,increment,hilo,native.

Oracle:sequence,seqhilo,increment,native.

跨平臺開發:native.

native將欄位管理交給資料庫自己定義。

---------------------------------------8-----------------------------------------------

not-null property references a null or transient value

此異常出現看開頭就個單詞就知道啦

的實體約束不能為空卻為空造成的,那我在這說一下對於這樣的情況我們時常犯的錯誤。

我們在對實體進行更新操作時最好是在一個會話中將資料從資料庫中調出並例項BEAN的物件。

然後再對此物件進行更改後在更新。

這樣的好處是:

一、資料是最新鮮的。

二、避免不必要的設定,特別是在一對多和多對多的情況下,比如你現在操作的實體並不是在一個會話中得

到,而是儲存在某些容器中,比如jsp的 SESSION中,雖然這樣的實體物件中有很多資料,但是如果你想得到

這些實體對應的1對多或多對1的實體時,就會發現會出現session已經關閉的異常。或則在你更新資料時出現

not-null異常等。

---------------------------------------14----------------------------------------------

Remember that ordinal parameters are 1-based!

HQL語句有錯誤

---------------------------------------15---------------------------------------------

failed to lazily initialize a collection of role: XXXXXXXX no session or

這個異常大致意思是說在多對一的時候(並且lazy="false"),物件的例項失敗,多數出現的情況有

1、粗心造成

例項物件類名寫錯之類的

2、邏輯錯誤

如之前就已經傳遞過來一個實體物件,然後呼叫實體物件的方法時牽涉到1對多的情況,但此時SESSION已經

關閉,所以根本無法進行一對多的操作。

3、設計到跨度的問題:

這樣打比方有多個實體物件,他們直接或則間接的有關聯。比如有4個實體,分別是廣告資訊、廣告、廣告問

答題、廣告商:他們之間的關係為:

廣告商 1:n 廣告

廣告 1:n 廣告問答題

廣告商 1:n 廣告商資訊

大家可以看到廣告和廣告商資訊是沒有直接關係的。但我要新增廣告的時候我就必須將廣告商的實體做為條

件。那麼這麼一來廣告商資訊可能間接的就必須用上。下面看我的操作:

ad(廣告),subject(題目)

     Ad ad = new Ad();

     ad.setAdProd(adform.getAdProd());

     ad.setIndustry(industry);

     ad.setAdPicture(pagefile.getFileName());

     ad.setAdFlack(adform.getAdFlack());

     ad.setAdDv(dvfile.getFileName());

     ad.setAdContent(adform.getAdContent());

     ad.setGray(gray);

     ad.setAdDate(new Date());

     ad.setOnlinetime(new Long(0));

     //以上為廣告的基本資訊填寫,而重要的是看下面一句,在這裡我的思路是subjectFormList是一個動

態提交的表單,裡面有若干個廣告問答題。我將這些問答題變為一個Set,然後作為ad的一個屬性。

     Set<Subject> subjectset=getSubjectSet(subjectFormList,ad);

     ad.setSubjects(subjectset);

//然後提交,makePersistent是一個封裝的方法,用途就是save()啦。addao是一個DAO,裡面有ADUS。

addao.makePersistent(ad);

表面上看來很符合邏輯,只要我們在ad的對映裡面加上對subject的級聯更新就可以完成這項操作。但實際上

會發生我們意想不到的問題,來讓我們看一下getSubjectSet()的內容:

public Set getSubjectSet(List<SubjectForm> subjectlist,Ad ad)

{

   Set<Subject> set=new HashSet<Subject>(0);

   Subject subject;


   for(Iterator<SubjectForm> it=subjectlist.iterator();it.hasNext();)

   {

    subject=new Subject();

    SubjectForm sf=it.next();

    subject.setSuContent(sf.getSucontent());

    subject.setSuOption(sf.getSuoption());

    subject.setSuResult(Arrays.deepToString(sf.getSuresult()));

    subject.setSuType(String.valueOf(sf.getSutype()));

    subject.setAd(ad);

    set.add(subject);

   }

   return set;
}

我們在這個方法上設一個斷點然後跟蹤,之後你會發現斷點在set.add(subject)只後就會出failed to
lazily initialize a collection of role: XXXXXXXX no session or session was closed這個異常,並且
這個異常還是出在了廣告商的廣告資訊上 gray.messages。是不是很不可理解?這也是Hibernate的懶漢機制問題。沒有任何一樣技術是完美的。那我們該怎麼處理這樣的問題。有很多人以為我們在廣告商對廣告商信
息的隱射上加lazy="false"這樣在對gray操作會對messages進行關聯,並查詢時提出資料。但你會發現改完之後會出現org.hibernate.LazyInitializationException: illegal access to loading collection這個異
常。並切lazy="false"是我們不推薦的一種方法。他會降低你的查詢效率。

對於這樣的情況最好的解決辦法就是不要偷懶,對一個實體進行操作的時候就該用那個實體的DAO,即應該有

2句HQL。如下把getSubjectSet()改一改:

public void getSubjectSet(List<SubjectForm> subjectlist,Ad ad)

{

   Set<Subject> set=new HashSet<Subject>(0);

   SubjectDAO subjectdao=DAOFactory.getDao(SubjectDAO.class);



   for(Iterator<SubjectForm> it=subjectlist.iterator();it.hasNext();)

   {

    Subject subject=new Subject();

    SubjectForm sf=it.next();

    subject.setSuContent(sf.getSucontent());

    subject.setSuOption(sf.getSuoption());

    subject.setSuResult(Arrays.deepToString(sf.getSuresult()));

    subject.setSuType(String.valueOf(sf.getSutype()));

    subject.setAd(ad);

    subjectdao.makePersistent(subject);

    //set.add(subject);

   }


}//遍歷出所有subject一個個的往資料庫里加。這樣便不會出問題了。

1、OpenSessionInView模式:

以下有2種方法,第1種是結合SPRING,第2種是採用了攔截器

Spring+Hibernate中,集合對映如果使用lazy="true", 當PO傳到View層時, 出現未初始化session已關閉的錯誤,只能在dao先初始化

parent.getChilds().size();

Spring提供Open Session In View來解決這個問題, 有兩種方式

1. Interceptor

       <!--</span><span style="COLOR: rgb(0,128,0)"> =========== OpenSession In View pattern

==============</span><span style="COLOR: rgb(0,128,0)">-->

    <bean id="openSessionInViewInterceptor"

             class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">

        <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

    <bean id="urlMapping"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

        <property name="interceptors" ref="openSessionInViewInterceptor"/>

        <property name="mappings">

            <props>

               ......

            </props>

        </property>

    </bean>

2. Filter

<web-app>

<filter>

<filter-name>hibernateFilter</filter-name>

<filter-class>

org.springframework.orm.hibernate.support.OpenSessionInViewFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>hibernateFilter</filter-name>

<url-pattern>*.do</url-pattern>

</filter-mapping>

</web-app>

第2種解決方法:

Hibernate.initialize()強制載入關聯物件

---------------------------------------16----------------------------------------------

Hibernate的No CurrentSessionContext configured 解決方案

Hibernate No CurrentSessionContext configured!

當你使用 Hibernate session factory的getCurrentSession() 函式時候,你可能見到過"No

CurrentSessionContext configured!"

出現這個問題,是因為你沒有正確配置 Hibernate internal session context management .

你只要在Hibernate.cfg.xml檔案中新增下面的配置就可以了:

<property name="current_session_context_class">thread</property>
 


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

^^^^
hibernate實現類中的方法2009-02-22 12:52--增加

public void addUser(User user){

Session s=null;

Transation tx=null;

try{

s=HibernateUtil.getSession();//在HibernateUtil工具類中寫的

tx=s.beginTransation();

s.save(user);//要是刪除操作就改成s.delete(user);要是更新:s.update(user);

tx.commit();

}catch(hibernateException e){

if(tx!=null){tx.rollback();}

trow e;

}finally{

if(s!=null){s.close();}

}

}

相關推薦

Hibernate 常見異常處理

Hibernate 常見異常net.sf.hibernate.MappingException        當出現net.sf.hibernate.MappingException: Error reading resource:…異常時一般是因為對映文件出現錯誤。    

spring mvc 異常處理

連結:http://gaojiewyh.iteye.com/blog/1297746 (附原始碼)  連結:http://zywang.iteye.com/blog/983801   連結:http://www.cnblogs.com/xguo/p/3163519.html

java中的try-catch-finnal異常處理學習筆記

不堪 java sha highlight 抽取 最終 throwable 關鍵字 學習筆記 一、異常概述 異常:Exception,是在運行發生的不正常情況。 原始異常處理: if(條件) {   處理辦法1  處理辦法2  處理辦法3} if(條件) {   處理辦法

Vista的MBR磁盤簽名Disk Signature

otl sign RR .cn 分區 工作 color 接班人 最新 原帖:Vista的MBR磁盤簽名(Disk Signature)_存夢_新浪博客 http://blog.sina.com.cn/s/blog_6fed14220100qq71.html 存夢發表於(2

C#-異常處理十四

範圍 eth 行程 value ole pub 捕獲 顯示轉換 clas 概念  異常處理是指程序在運行過程中,發生錯誤會導致程序退出,這種錯誤,就叫做異常  但並不是所有的錯誤都是異常  而處理這種錯誤,稱為異常處理  異常處理實際是不斷去發掘異常、修改異常,使程序更穩定

常量指標與指標常量的區別

三個名詞雖然非常繞嘴,不過說的非常準確。用中國話的語義分析就可以很方便地把三個概念區分開。 一) 常量指標。 常量是形容詞,指標是名詞,以指標為中心的一個偏正結構短語。這樣看,常量指標本質是指標,常量修飾它,表示這個指標乃是一個指向常量的指標(變數)。 指標指向的物件是常量,那麼這個物件

Essential c++ 第七章異常處理exception handling課後練習

練習7.1 請找出以下函式中所有可能發生錯誤的地方。 int *alloc_and_init(string file_name) { ifstream infile(file_name.c_str()); int elem_cnt; infile >> elem_c

使用Spring框架的好處

在SSH框假中spring充當了管理容器的角色。我們都知道Hibernate用來做持久層,因為它將JDBC做了一個良好的封裝,程式設計師在與資料庫進行互動時可以不用書寫大量的SQL語句。Struts是用來做應用層的,他它負責呼叫業務邏輯serivce層。所以SSH框架的流程大致是:Jsp頁面----Strut

php實現例項化類後自動進行錯誤以及異常處理簡易版

<?php class App { public function __construct() { /* * ini_set 設定配置項 * display_errors 是否在頁面顯示錯誤資訊 *

[Xamarin] 透過Native Code呼叫 JavaScript function

今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP 因為這篇文章至少講解了一下,你如何在Xamarin中使用了WebView因為重複的部分我就不另外解釋了 1. 首先建立Lay

傳統、VHD、VHDX效能對比測試

nkc3g4發表於 2014-4-30 16:24:41 傳統、VHD、VHDX效能對比測試 - Windows To Go優盤系統 - 蘿蔔頭IT論壇 - Powered by Discuz! https://bbs.luobotou.org/forum.php?mod=viewthread&ti

7.2 異常處理Exception Handing

Exception Handing快速檢閱 C++的exception handing由三個主要語彙元件構成: 一個throw子句。它在程式某處發出一個exception,被丟擲去exception可能是內建型別,也可是自定義型別。 一個或多個catch。每個catch子句都是一

scala:異常處理try/catch

處理語法: try { // ... } catch { case ex: Exception => { ex.printStackTrace() // 列印到標準err System.err.println("exception==

SQL Server資料庫SP命令祥解

1、資料庫:(1)sp_helpdb:報告有關指定資料庫或所有資料庫的資訊。例:sp_helpdb   --顯示所有資料庫資訊(名稱、大小等)例:sp_helpdb Recruitment   --顯示Recruitment資料庫資訊(名稱、大小等)(2)sp_renamed

探祕特種兵-揭開《士兵突擊》原型部隊老A的神祕面紗!

2007年,《士兵突出》迅速走紅,網際網路上、生活中,聚集了幾十萬的“兵迷”,“兵”們的一舉一動都吸引著觀眾的眼球,人們迫切的想知道,“突擊”背後,那些強悍的部隊到底有什麼魔力,讓“許三多”成為“兵王”?近日,首次走進《士兵突擊》“老A”原型部隊--特種兵大隊的青少年海陸空將

SpringBoot進階之統一異常處理含原始碼

淺談異常處理 在J2EE專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統的程式碼耦合度高,工作量大且不好統一,維護的工作量也很大。

我在北京當了兩個月“地老鼠”

我在北京當了兩個月“地老鼠”                作者:清秋子 提交日期:2003-07-15 19:03:00                           我在北京當了兩個月“地老鼠”--底層生活散記                     1    

TomcatJVM監控方法

1、Tomcat自帶的監控頁面      配置詳見Tomcat安裝配置監控一文,如圖所示為監控頁面:                   2、Lo

SpringBoot 統一異常處理十六

每個異常都自己去處理很麻煩,所以我們建立一個全域性異常處理類來統一處理異常 一,首先建立全域性異常處理類:通過使用@ControllerAdvice定義統一的異常處理類,而不是在每個Controller中逐個定義。@ExceptionHandler用來定義函式針對的異常型別

Groovy創始人:Java面臨終結 Scala將取而代之

2010-08-11 16:22 | 3587次閱讀 | 【已有11條評論】發表評論 來源:51CTO | 收藏到我的網摘 Groovy創始人James Strachan前日在其部落格(地址在Blogspot,未架好梯子前請勿隨便點選)上發表了一篇文章,題目為《Scal