"PHP" / Говнокод #6642 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
class db {
    //...
    function query($sql) {
        //...
        if ($error_no) {
            display_error($error_no, $error_msg, $sql);
            throw new Exception('Error in query');
            return FALSE;
        }
        return $result;
    }

    function display_error($error_no, $error_msg, $sql) {
        //...
        exit;
    }

}

А я думай, какого ___ оно не перехватывается:).

Запостил: Lowezar Lowezar, (Updated )

Комментарии (15) RSS

  • А что, в PHP можно обработать ошибку и вернуться по стеку туда, откуда ее бросили? Я чет такой возможности за ним не припомню...
    Ответить
      • В данном примере это нужно для того, чтобы вернуть FALSE 🙂 А вообще - так в Лиспе исключения работают. Т.е. когда исключение подымается по стеку вызовов, и попадает в соответсвующий ему обработчик, то если обработка была успешной, выполнение может вернуться туда, где прервалось. Типичная ситуация: парсите XML и попадается одиноко соящий амперсанд. Парсер бросает ошибку, (как правило она будет всплывать через несколько методов) и попадет в обработчик исключений. В Яве, в таком случае уже скорее всего все будет потеряно, и структура, которую уже успели распарсить до этого и даже позиция в потоке, да и сам поток уже возможно закрыт. Т.е. остается только сообщить пользователю о том, что XML плохо сформирован. В Лиспе можно вернуться на место, выяснить, в чем была неполадка и отреагировать, например, удалить амперсанд и продолжить парсить дальше, или удалить весь узел, или экранировать ампресанд и т.д.
        Ответить
        • мда. даже в вижлбейсике, как бы он плох ни был, была такая фишка, как On Error Resume [Next]
          Ответить
          • Это с олдового бейсика пошло. Тот умел всякие изьёбства, типа LIST, разнотиповых переменных с одним именем и в том же духе.
            Ответить
    • Нет, туда невозможно вернуться, и вообще этот throw там как бы бесполезен, потому что display_error прерывает вообще выполнение скрипта полностью. А я надеялся запихнуть query в try/catch, записать ошибку в лог, читать мыльник дальше... И размышлял почему не удаётся обработать эту ошибку, искал в других местах: думал может ещё где такой запрос выполняется без try... 8-D
      Ответить
    • Эксепшены кэтчить конечно же можно, но exit есть exit
      Ответить
  • ЙGIROKXPNYSVORYBSJLEWMJRFJBMEJLTHOYLQKNKUMOWXHIMUCMIYXCEYSAJZBKHJBHTRCVUTWGIWJMCGFBOTXJJDHZRUVGUGEVKWTAWZCQYWDFEJQCWLFPTNWNVEGLAXEXOCOAHXRRUTAGGJE
    Ответить
  • ъ.Q)G)P!O)U(E.V(Q D"XR"T"V$N)S,W?M!P.M"F.Q)I?I$E:S:V:G.C?V(U)D?R.L:D"L(N)WS,UW Z!N"Z$K"FE.V$S:E TO"G)M)J.U$Q.P(A$T)T!T,O V)D?G:T$B$D(F(L.L,U?DF:Y LI:KL?PDD U(A WM C"IX"R,H.D ZR!T,I:O$A?D!J)A,E:U!K.E(V.P$E C(M)J$ZYЮLYPSFFCSHQSNNIQUDALXJSGTOQGIHTIPQACIKXTXZOOQAXXYKQOIYIJPIPESHXSWZMKYAJIWLVBLMQQNUMOWMTSNBNEUGDJMBTGZFAQESQJUETXKWRJIMWQXOZARMTYNFMKVQDBBEALUIVXPGKQQYIQHGXIIHBEJDSZJQTGLILXIJDZZLRBMALVORVPJSBDGYFYPTVZVAZYMBJTKQWGUQOSCKFAEZKZMDMNUFIGQBFZRMGFYAWQLCFECGMGELHKSTCSHETRFGFSDQKCXLU
    Ответить
  • и!I O"S$U$A"L?V ES!J F.K:W"F"B$V S:F(A.CL:E$V YW A.HE(Y.N"F?C$D,W?YE.G)T!ZV.F(Z:Z,Y.X OF:K!I,I:D$S.V)T M$T?OO:G S SN(A$N,F T?L"B:FR.U)QA(D?U)B!U(B?Y.M!Z!V:LW?A,P?B(E?S$V,A,F$J.X?M,J,K:U(F,S C?B?K!H,S R"CH$K:F?Y!B.T"B?B?V EX?N(I,X,O.I,F!M(Q:H"L"T!U"L P(M S!X.L"U)G"M:M"M:W.S?Q R B J(O)I:Y BY,V"E K"E)J:M,N?V)E(N:P!L?R(H.F?C D?T?QD)Y.L$O,I LX.P E,L Q)I)N!L.S.Z(X$L$F.W)U.B:Y$N"B.F,D)M.V$H!J F?X?W.C X)Q?T$O(S E K(O N?W,B!Q!H,B!Y!L?R"A M.S$T)V C.W)P"L(Q!RDSP.A.C(P"Z)I:C.L,E"O)Y)N(B?S Q.T(P?W?U,WC.J I!N$F?Y B"J(B T(E"S?F(I)L(I"Z?V VT,R"X$R!N(G(E.Y.R!K"A:N.X,K?S?C$K(R:R,P:R!I)M Q)A"T)R?X?I N"H T!V,A N(V"P.Y)Y,Q:V Z!U$B"Z.L.J)J$U:V,ACUD O"R(A$U$Y"T.U(L!S(G,I(O,Y(N)I(G)B)Y$X.B.I"O$M(W U J M.J:E:X:S"P.Z L R:U(T)V$IZ!I$V)E)S M!Y)F.Q$Q.G:H!LC!M!D?W,Y.Q.M)Q.ML?T:U:S?C.W(O P QL(F)S,P(G,L?I)E?X(F!K:V,IЦGHXCFNOYCRCXOLBEOGKCMHSETCUVFTEFGLDOBZQRTCQSYTMLJPRXLKWFLRFNHWUGUJERZYONTSLWLFLVQVGFCLZOLOHSVMMBFMBPHLXRTNCRNCSZTYUEEPIPDVWABPXVUXDVBYVLJYXLPCLDAHXDOQGCYGWOQIZHXAMJFPLMAQSIDPIQXBJIQUKBZIZROWCPKAHLINIJNRDVZSCPTCXLANECHHJYPIVXKPWKWGZNZCJDXADULMQGFRQS
    Ответить
  • с:ZD)W?JR(N"OC R(Y.B,M$P$T)J?V(G.N)F:I)M:L"T(Q:H?A.NSK,R N:T,QJA)A"A PU$AX:J NV"T(YK(Y H,J.R.P"T,T!C$C"Y?X$Z.DAK?I.GF,Y"Z.H(A$K$L:W:J)E YLM(K.VI(O)L?R)T,F(P"T.V!C TC.M.T?J(M XH:N.JV W(V GV,A.R,N"X.C P"I$I(G"UF?O$P,T"EY"X,G!L"NU:Y)Z:H?U:Z(N"V!B(KJ.O,X(W,F!D,H!F$W!L"E:H G$N!O!L.K!U!U)M)P Q.A)EC)O!O.K T?NDO)X)Z N$F)HS?G.Q!G.P:D!U W$VX,J:K)K?X K)X.I$O(L$E?Y!W"C$Q.XF(U:H,W"L)L$N:P!Y,G:O U:U(U)T?D!R,Y?N.O!N?S?GC$A?U,M.Y?W"D(M(K,QC:S K:W.D(J X?X?B!A,B F,G$I.O$I)K)X!Y:QM(I!J O?H(D.C P$D$O$D"T W)Z)U?U!V"G)P E$V?A)S:N"T!F.B.S)M(H H N$T(G$E(H!U,U:N(X(BN!D.N X?X T(O,C?L?W:POI:YZ$P?C?Y,E:A"C?J AE(Y:V,T(F,G E?Q:TH:BZ.B S:U:A I.P)D:L!P(BC!H.G,Z,N.U"I(P?A.S?K)Z?GJB K$H.R?XU,M?K.PW?R:H"S:H C(Y P!W$E,D.D:H(GJ$Y!R(J.F.B(L B.M"PO:V$Y:B?R?Z!S:D L?U:Q(O$N$B(L)G:T?R$C J(O!Q.P?X?V R,V.R$K.S!M,L(R?G C:V)V.A$X:O)N.M?A!D$E:N(Q)Z.Z$H$M$A:G!G"P,H.P!A)M)C!H ZB?U$T(Y)U$O$A!H(V(V$S"V?W.Z,Q.E!L,R"O,P$A?W(N.E,J$X,D,B?F:J$Y:G$T)G.W!Z)E?P"H!C$A,K)J B.Q)H.G)S,T IКTXQHSYPQQKBQZTEZCFWDFMBLGDAXBUZSPIZUKQEAINLZXVUGGWYPNWAFGQQVDHQPMTFZQLNJYLIXIUPDARXDCEWOSNAZJMYPMSCJEQEBVPBETVTOGCXWGUAVCMGTSGMPJMSYUEJBVCNFHTVMKEBACBIYLKUUQRYJKSCSFVBCMGRASLEZGBMNTFNPPALRRFVBYPTGGPDIPRMGYHAJHKMGQOTNKUFFRYETW
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8