404 Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) Kāda iksa pēc man dokumentācijā jāmeklē, ka jāizsauc funkcija libxml_use_internal_errors(true), lai minētais cikls nenobeigtos ar Fatal Error? Normāli būtu, ja bez apstrādes izmestos exception, kura nosaukumu pēc tam es ieliktu kodā un varētu noķert arī dokumentāciju vispār neatverot. Manuprāt tā tieši ir priekšrocība,ka skripts kategoriski neizbeigsies no sevis neatkarīgu apstākļu dēļ,respektīvi šajā gadījumā dēļ līka xml,un uzdodot libxml_use_internal_errors(true) vēsā mierā to var turpināt parsēt kaut vai ar XPath un neuztraukties par nekādiem exceptioniem. Neesmu nekad mēģinājis XML lietas iekš Python,bet tāpēc jautājums tīri interesei: kas tur notiks identiskā gadījumā? Ielasam XML,izrādās ka tas ir nevalīds,noķeram exceptionu un ....? Izvadam glītu paziņojumu ka XML diemžēl nevar tikt apstrādāts un viss beidzas? Edited July 3, 2012 by 404 Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) .. un neuztraukties par nekādiem exceptioniem. Neesmu nekad mēģinājis XML lietas iekš Python,bet tāpēc jautājums tīri interesei: kas tur notiks identiskā gadījumā? Ielasam XML,izrādās ka tas ir nevalīds,noķeram exceptionu un ....? Izvadam glītu paziņojumu ka XML diemžēl nevar tikt apstrādāts un viss beidzas? Rodas iespaids, ka tā īsti nav sapratnes par to, kas ir Exception un kā tos pareizi lieto. Programmētājs, kas saprot, ko dara, par Exceptioniem neuztraucas. Pat otrādi, viņš tos lieto, tā ir daļa no aplikācijas projektējuma. P.s.: http://php.lv/f/topic/20520-ka-panakt-lai-loop-turpinas-pec-fatal-error/page__view__findpost__p__160015 Edited July 3, 2012 by Mr.Key Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 Man gan šķita,ka šis piemērs lieliski demonstrē kā un kur viņus labāk būtu nelietot,bet ticēšu uz vārda :) Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) Kāpēc Tev tāda pārliecība, ka lieliski demonstrē kā nelietot, ja pats saki, ka nemaz īsti nezini, kā tas būtu, ja lietotu (t.i., ja valoda to atbalstītu)? Edited July 3, 2012 by Mr.Key Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 3, 2012 Author Report Share Posted July 3, 2012 Lai uzkurinātu šo topiku vēl vairāk... Ar laiku gan jau sāks Python/Ruby izmantot, gan arī Windows nīst... gan iekš Vim kodēt, gan ne tik ļoti censties pierādīt, ka pašiem nav taisnības. Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 Nu pārliecība bija balstīta uz vienkāršu pieņēmumu: Ir jāielasa XML par katru cenu,tāpēc pēc internal_errors uzsetošanas exceptions kļūst nevajadzīgs jo try būs pozitīvs jebkurā gadījumā. Kļūdos? Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) Lai uzkurinātu šo topiku vēl vairāk... Interesanti,kur tu eļļu dabūsi kad viss jau nokurināts. Ar laiku gan jau sāks Python/Ruby izmantot Neviens škiet neteica ka Python nav lietojams. Bija pašam vajadzība pēc primitīva skripta,kas KDE4 vidē nolasa no clementine playera metadatus,noformē un iemet iekš skype. Ar Python to izdevās norealizēt pārdesmit minūtēs un nevienu brīdi neienāca prātā doma,ka to vajag darīt ar PHP un pēc tam aizstaigāt uz kādu pitonistu forumu viņiem apskaidrot,ka nahren viņiem to Python vispār nevajag. gan arī Windows nīst... Kopš pagājuša gadsimta neesmu windows lietojis,bet nevaru nekā noskaņoties zvērīgam naidam. Ko darīt? gan iekš Vim kodēt Piekrītu. Visi profi kodē Vim'ā un neizmanto kaut kādas tur vēl IDE's gan ne tik ļoti censties pierādīt, ka pašiem nav taisnības. Parādi lūdzu kādu forumu kurā valda vienprātība uzskatos. Tādā gadījumā pasaulē būtu 1 programmēšanas valoda,1 os un 1 autoritāte. Ideāla nākotne,uz kuru jau tagad google tiecas. Edited July 3, 2012 by 404 Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) Nu pārliecība bija balstīta uz vienkāršu pieņēmumu: Ir jāielasa XML par katru cenu,tāpēc pēc internal_errors uzsetošanas exceptions kļūst nevajadzīgs jo try būs pozitīvs jebkurā gadījumā. Kļūdos? Kas gan tā par situāciju, ka XML jāielasa par katru cenu? Ja XML ir kļūdains, tad par katru cenu ielasīsi to? Reizēm tas nozīmē pilnīgi pretējo, ka šāds XML NAV jāielasa, jo kāpēc gan ielasīt kļūdainu XMLu? Vai tu gribētu, ka tavā bankas kontā tiktu ielasīts kļūdains XML? :) Bet tas nav jāuztver burtiski, vairāk tas tā, priekš pārdomām... Bet, ja tas patiešām ir tā, ka jāielasa par katru cenu, arī tad, ja aplikācija izmet Exception, tad ir jālabo aplikācija, nevis jāizslēdz Exception. Jo Exception nozīmē to, ka ir izņēmumsituācija. Respektīvi, situācija nav normāla! Daļu izņēmumsituāciju programmētājs parasti paredz, tādēļ, izmantojot to, ka Exception ir dažādu tipu, programmētājs tad šīs paredzētās izņēmusituācijas var apstrādāt savā programmā. Tas neizslēdz to, ka daļā situāciju darbs tiek turpināts. Pseidokodā: for xmlNode in xmlNodes: try: doSomethingWithNode(xmlNode); // throws NumberFormatException catch NodeEmtpyFriendlyException e: // Mēs zinām, ka šitā var gadīties, turpinām darboties // nothing catch NumberFormatException e: // Atkal zināma situācija, taču neprasa apturēšanu warn "Kļūda " + e.getTraceAsString(); xmlNode->numurs = 0; // patiesībā pat varam sagremot catch Exception // Nezināms, neparedzēts Exception, sūtam epastu email "Slikti"; // un, pieņemsim, ka mums jātaisa rollback... rollback(); throw new AppException('Application encountered an unexpected XML, rolled back'); // šito uzķers augstāka līmeņa objekts un, piemēram, attēlos lietotājam draudzīgu error lapu (vai lodziņu) bez Stack traces, ierakstīs kļūdu logā utt. end; end; Kas attiecas uz šo te: tāpēc pēc internal_errors uzsetošanas exceptions kļūst nevajadzīgs jo try būs pozitīvs jebkurā gadījumā.Kā jau skaidroju, Exceptions nevar būt nevajadzīgs. Exceptions ir neatņemama OOP sastāvdaļa (tāda, kādu to pazīst JAVA, C# u.c.). edgarsj jau norādīja, PHP pusē tā ir liela problēma, ka tas nav tīrs OOP un grūti ir ar to kļūdu apstrādi. Piemēram, ja JAVĀ augstākā līmeņa objekts uzķers visus Exception (bubble up princips), tos visus šajā objektā var logot ar pilnu stack trace un vēlāk debugot, tad PHP pusē aplikācija var vienkārši nomirt ar Erroru un ej nu saproti, kas un kā, un kapēc. Edited July 3, 2012 by Mr.Key Quote Link to comment Share on other sites More sharing options...
edgarsj Posted July 3, 2012 Report Share Posted July 3, 2012 Tādēļ tev patīk strādāt ar šādām valodām - http://wiki.python.o...ython2orPython3 :) Mēs iesakām izvēlēties python3, jo tā ir nākotne, bet uz python3 vēl nav visas bibliotēkas pieejamas, tādēļ varbūt jums tomēr labāk būs izvēlēties python2, kurā uzrakstītais kods pēc tam, protams, nestrādās uz python3. Kodējot py2 kodu atbilstoši py3k guidelines, ar šo rīku visu automatizēti var pārkonvertēt - http://docs.python.org/library/2to3.html. Lielais migrācijas process komūnā noris lēni, bet nenovēršami. Prognozēju, ka pēc 2-3 gadiem Python 3 būs noklusētais standarts. Labāk parunāsim par to, ka PHP pat minor versijām ir backwards incompatible izmaiņas ;) Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 (edited) Kas gan tā par situāciju, ka XML jāielasa par katru cenu? Ja XML ir kļūdains, tad par katru cenu ielasīsi to? Reizēm tas nozīmē pilnīgi pretējo, ka šāds XML NAV jāielasa, jo kāpēc gan ielasīt kļūdainu XMLu? Ideālā pasaulē jā,bet reāli pēc paša pieredzes ir nācies secināt ka ir jāstrādā ar to kas ir,nevis jāpieprasa un jācer ka sources autors risinās problēmu. Un ja reiz līkais XML ir iedabūts objektā,tad arī nodes nekad nav bijis problēmu apstrādāt. Es saprotu un nestrīdos ka vajag exceptionus visur kur tas var būt kritiski,bet ar ko tevis minētais: try: doSomethingWithNode(xmlNode); // throws NumberFormatException catch NodeEmtpyFriendlyException e: būs labāks par: if(is_object($xmlNode) && $xmlNode->length) { // Viss notiek } Ar HTML saturu situācija vispār nekontrolējama. Tur ieteikums neparsēt neiet cauri. Kas attiecas uz OOP,tad tas viss ir forši,bet kaut kādos mini skriptos neredzu problēmu,kāpēc lai to visu maksimāli vienkārši neizdarītu. Edited July 3, 2012 by 404 Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted July 3, 2012 Report Share Posted July 3, 2012 Es tā īsti nesapratu, vai tas "ja reiz līkais XML ir iedabūts objektā" attiecas arī uz 50 un 100 MB lieliem un varbūt arī bezgalīgi lieliem XML failiem? Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 Uz tādiem ko var atļauties ramā lasīt. Bezgalīgu XML nav nācies parsēt,bet arī gigabaitīgam SAX handleros neredzu,ko tādu svarīgu tur varētu ar Exceptions darīt,tā vietā lai vienkārši true|false nočekotu. Quote Link to comment Share on other sites More sharing options...
rpr Posted July 3, 2012 Report Share Posted July 3, 2012 Kura tad ir tā viena googles valoda? Tādā gadījumā pasaulē būtu 1 programmēšanas valoda,1 os un 1 autoritāte. Ideāla nākotne,uz kuru jau tagad google tiecas. Quote Link to comment Share on other sites More sharing options...
edgarsj Posted July 3, 2012 Report Share Posted July 3, 2012 Es saprotu un nestrīdos ka vajag exceptionus visur kur tas var būt kritiski,bet ar ko tevis minētais: try: doSomethingWithNode(xmlNode); // throws NumberFormatException catch NodeEmtpyFriendlyException e: būs labāks par: if(is_object($xmlNode) && $xmlNode->length) { // Viss notiek } 1) es saku, ka konkrētajā gadījumā, tas, ka nav iespējas ar Exception apstrādāt, bet uzreiz ir Fatal Error ir čerez ž. 2) tu man uzbrauc, ka man nepatīk "papildus iespējas izmantot to apstrādes metodi kura liekas konkrētā gadījumā ērtāka" 3) paprasu tev parādīt, kā tad es varu lietot Exception konkrētajā gadījumā 4) sāc stāstīt, cik viss īstenībā ir kruta bez Exception, kaut arī neizproti to būtību WAT? Kas attiecas uz OOP,tad tas viss ir forši,bet kaut kādos mini skriptos neredzu problēmu,kāpēc lai to visu maksimāli vienkārši neizdarītu. Tad PHP ir tikai mini skriptiem paredzēta? Tur mēs laikam pat varētu būt vienisprātis Quote Link to comment Share on other sites More sharing options...
404 Posted July 3, 2012 Report Share Posted July 3, 2012 Kura tad ir tā viena googles valoda? Es runāju par google tieksmi visu pakļaut savai kontrolei,un tikai priecāšos ja pēc gadiem 10 pierādīsies,ka paranoja būs izrādījusies pilnīgi nepamatota un arī Go! ir tikai tāds ņezahuj darīt prikols bez nekādiem tālejošiem plāniem. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.