91422f345a5c541103ee8be4874ff998929d1a04
[GitHub/WoltLab/woltlab.github.io.git] / 5.4 / php / exceptions / index.html
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
12 <link rel="shortcut icon" href="../../assets/default.favicon.ico">
13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.0.5">
14
15
16
17 <title>Exceptions - WoltLab Suite Documentation</title>
18
19
20
21 <link rel="stylesheet" href="../../assets/stylesheets/main.77f3fd56.min.css">
22
23
24 <link rel="stylesheet" href="../../assets/stylesheets/palette.7fa14f5b.min.css">
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
34
35
36
37
38 <link rel="stylesheet" href="../../stylesheets/extra.css">
39
40
41
42
43
44 </head>
45
46
47
48
49
50
51
52 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
53
54
55
56 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
57 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
58 <label class="md-overlay" for="__drawer"></label>
59 <div data-md-component="skip">
60
61
62 <a href="#exceptions" class="md-skip">
63 Skip to content
64 </a>
65
66 </div>
67 <div data-md-component="announce">
68
69 <aside class="md-announce">
70 <div class="md-announce__inner md-grid md-typeset">
71
72 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
73
74 </div>
75 </aside>
76
77 </div>
78
79
80
81 <header class="md-header" data-md-component="header">
82 <nav class="md-header__inner md-grid" aria-label="Header">
83 <a href="../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation">
84
85 <img src="../../assets/logo.png" alt="logo">
86
87 </a>
88 <label class="md-header__button md-icon" for="__drawer">
89 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
90 </label>
91 <div class="md-header__title" data-md-component="header-title">
92 <div class="md-header__ellipsis">
93 <div class="md-header__topic">
94 <span class="md-ellipsis">
95 WoltLab Suite Documentation
96 </span>
97 </div>
98 <div class="md-header__topic" data-md-component="header-topic">
99 <span class="md-ellipsis">
100
101 Exceptions
102
103 </span>
104 </div>
105 </div>
106 </div>
107 <div class="md-header__options">
108
109 </div>
110
111 <label class="md-header__button md-icon" for="__search">
112 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
113 </label>
114
115 <div class="md-search" data-md-component="search" role="dialog">
116 <label class="md-search__overlay" for="__search"></label>
117 <div class="md-search__inner" role="search">
118 <form class="md-search__form" name="search">
119 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
120 <label class="md-search__icon md-icon" for="__search">
121 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
122 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
123 </label>
124 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
125 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
126 </button>
127 </form>
128 <div class="md-search__output">
129 <div class="md-search__scrollwrap" data-md-scrollfix>
130 <div class="md-search-result" data-md-component="search-result">
131 <div class="md-search-result__meta">
132 Initializing search
133 </div>
134 <ol class="md-search-result__list"></ol>
135 </div>
136 </div>
137 </div>
138 </div>
139 </div>
140
141
142 <div class="md-header__source">
143
144 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
145 <div class="md-source__icon md-icon">
146
147 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
148 </div>
149 <div class="md-source__repository">
150 GitHub
151 </div>
152 </a>
153 </div>
154
155 </nav>
156 </header>
157
158 <div class="md-container" data-md-component="container">
159
160
161
162
163 <main class="md-main" data-md-component="main">
164 <div class="md-main__inner md-grid">
165
166
167
168 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
169 <div class="md-sidebar__scrollwrap">
170 <div class="md-sidebar__inner">
171
172
173
174
175
176 <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
177 <label class="md-nav__title" for="__drawer">
178 <a href="../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation">
179
180 <img src="../../assets/logo.png" alt="logo">
181
182 </a>
183 WoltLab Suite Documentation
184 </label>
185
186 <div class="md-nav__source">
187
188 <a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
189 <div class="md-source__icon md-icon">
190
191 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
192 </div>
193 <div class="md-source__repository">
194 GitHub
195 </div>
196 </a>
197 </div>
198
199 <ul class="md-nav__list" data-md-scrollfix>
200
201
202
203
204
205
206
207
208 <li class="md-nav__item">
209 <a href="../../getting-started/" class="md-nav__link">
210 Getting Started
211 </a>
212 </li>
213
214
215
216
217
218
219
220
221
222
223
224
225
226 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
227
228
229 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
230
231 <label class="md-nav__link" for="__nav_2">
232 PHP API
233 <span class="md-nav__icon md-icon"></span>
234 </label>
235 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
236 <label class="md-nav__title" for="__nav_2">
237 <span class="md-nav__icon md-icon"></span>
238 PHP API
239 </label>
240 <ul class="md-nav__list" data-md-scrollfix>
241
242
243
244
245
246 <li class="md-nav__item">
247 <a href="../pages/" class="md-nav__link">
248 Pages
249 </a>
250 </li>
251
252
253
254
255
256
257
258 <li class="md-nav__item">
259 <a href="../database-objects/" class="md-nav__link">
260 Database Objects
261 </a>
262 </li>
263
264
265
266
267
268
269
270 <li class="md-nav__item">
271 <a href="../database-access/" class="md-nav__link">
272 Database Access
273 </a>
274 </li>
275
276
277
278
279
280
281
282
283
284 <li class="md-nav__item md-nav__item--active">
285
286 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
287
288
289
290
291 <label class="md-nav__link md-nav__link--active" for="__toc">
292 Exceptions
293 <span class="md-nav__icon md-icon"></span>
294 </label>
295
296 <a href="./" class="md-nav__link md-nav__link--active">
297 Exceptions
298 </a>
299
300
301 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
302
303
304
305
306
307 <label class="md-nav__title" for="__toc">
308 <span class="md-nav__icon md-icon"></span>
309 Table of contents
310 </label>
311 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
312
313 <li class="md-nav__item">
314 <a href="#spl-exceptions" class="md-nav__link">
315 SPL Exceptions
316 </a>
317
318 </li>
319
320 <li class="md-nav__item">
321 <a href="#custom-exceptions" class="md-nav__link">
322 Custom Exceptions
323 </a>
324
325 </li>
326
327 </ul>
328
329 </nav>
330
331 </li>
332
333
334
335
336
337
338
339
340 <li class="md-nav__item md-nav__item--nested">
341
342
343 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" >
344
345 <label class="md-nav__link" for="__nav_2_5">
346 API
347 <span class="md-nav__icon md-icon"></span>
348 </label>
349 <nav class="md-nav" aria-label="API" data-md-level="2">
350 <label class="md-nav__title" for="__nav_2_5">
351 <span class="md-nav__icon md-icon"></span>
352 API
353 </label>
354 <ul class="md-nav__list" data-md-scrollfix>
355
356
357
358
359
360 <li class="md-nav__item">
361 <a href="../api/caches/" class="md-nav__link">
362 Caches
363 </a>
364 </li>
365
366
367
368
369
370
371
372 <li class="md-nav__item">
373 <a href="../api/comments/" class="md-nav__link">
374 Comments
375 </a>
376 </li>
377
378
379
380
381
382
383
384 <li class="md-nav__item">
385 <a href="../api/cronjobs/" class="md-nav__link">
386 Cronjobs
387 </a>
388 </li>
389
390
391
392
393
394
395
396 <li class="md-nav__item">
397 <a href="../api/events/" class="md-nav__link">
398 Events
399 </a>
400 </li>
401
402
403
404
405
406
407
408
409 <li class="md-nav__item md-nav__item--nested">
410
411
412 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
413
414 <label class="md-nav__link" for="__nav_2_5_5">
415 Form Builder
416 <span class="md-nav__icon md-icon"></span>
417 </label>
418 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
419 <label class="md-nav__title" for="__nav_2_5_5">
420 <span class="md-nav__icon md-icon"></span>
421 Form Builder
422 </label>
423 <ul class="md-nav__list" data-md-scrollfix>
424
425
426
427
428
429 <li class="md-nav__item">
430 <a href="../api/form_builder/overview/" class="md-nav__link">
431 Overview
432 </a>
433 </li>
434
435
436
437
438
439
440
441 <li class="md-nav__item">
442 <a href="../api/form_builder/structure/" class="md-nav__link">
443 Structure
444 </a>
445 </li>
446
447
448
449
450
451
452
453 <li class="md-nav__item">
454 <a href="../api/form_builder/form_fields/" class="md-nav__link">
455 Fields
456 </a>
457 </li>
458
459
460
461
462
463
464
465 <li class="md-nav__item">
466 <a href="../api/form_builder/validation_data/" class="md-nav__link">
467 Validation and Data
468 </a>
469 </li>
470
471
472
473
474
475
476
477 <li class="md-nav__item">
478 <a href="../api/form_builder/dependencies/" class="md-nav__link">
479 Dependencies
480 </a>
481 </li>
482
483
484
485 </ul>
486 </nav>
487 </li>
488
489
490
491
492
493
494
495 <li class="md-nav__item">
496 <a href="../api/package_installation_plugins/" class="md-nav__link">
497 Package Installation Plugins
498 </a>
499 </li>
500
501
502
503
504
505
506
507 <li class="md-nav__item">
508 <a href="../api/user_activity_points/" class="md-nav__link">
509 User Activity Points
510 </a>
511 </li>
512
513
514
515
516
517
518
519 <li class="md-nav__item">
520 <a href="../api/user_notifications/" class="md-nav__link">
521 User Notifications
522 </a>
523 </li>
524
525
526
527
528
529
530
531 <li class="md-nav__item">
532 <a href="../api/sitemaps/" class="md-nav__link">
533 Sitemaps
534 </a>
535 </li>
536
537
538
539 </ul>
540 </nav>
541 </li>
542
543
544
545
546
547
548
549 <li class="md-nav__item">
550 <a href="../code-style/" class="md-nav__link">
551 Code Style
552 </a>
553 </li>
554
555
556
557
558
559
560
561 <li class="md-nav__item">
562 <a href="../apps/" class="md-nav__link">
563 Apps
564 </a>
565 </li>
566
567
568
569
570
571
572
573 <li class="md-nav__item">
574 <a href="../gdpr/" class="md-nav__link">
575 GDPR
576 </a>
577 </li>
578
579
580
581 </ul>
582 </nav>
583 </li>
584
585
586
587
588
589
590
591
592
593
594
595 <li class="md-nav__item md-nav__item--nested">
596
597
598 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
599
600 <label class="md-nav__link" for="__nav_3">
601 Languages, Templates & CSS
602 <span class="md-nav__icon md-icon"></span>
603 </label>
604 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
605 <label class="md-nav__title" for="__nav_3">
606 <span class="md-nav__icon md-icon"></span>
607 Languages, Templates & CSS
608 </label>
609 <ul class="md-nav__list" data-md-scrollfix>
610
611
612
613
614
615 <li class="md-nav__item">
616 <a href="../../view/languages/" class="md-nav__link">
617 Languages
618 </a>
619 </li>
620
621
622
623
624
625
626
627 <li class="md-nav__item">
628 <a href="../../view/templates/" class="md-nav__link">
629 Templates
630 </a>
631 </li>
632
633
634
635
636
637
638
639 <li class="md-nav__item">
640 <a href="../../view/css/" class="md-nav__link">
641 CSS
642 </a>
643 </li>
644
645
646
647 </ul>
648 </nav>
649 </li>
650
651
652
653
654
655
656
657
658
659
660
661 <li class="md-nav__item md-nav__item--nested">
662
663
664 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
665
666 <label class="md-nav__link" for="__nav_4">
667 JavaScript API
668 <span class="md-nav__icon md-icon"></span>
669 </label>
670 <nav class="md-nav" aria-label="JavaScript API" data-md-level="1">
671 <label class="md-nav__title" for="__nav_4">
672 <span class="md-nav__icon md-icon"></span>
673 JavaScript API
674 </label>
675 <ul class="md-nav__list" data-md-scrollfix>
676
677
678
679
680
681 <li class="md-nav__item">
682 <a href="../../javascript/general-usage/" class="md-nav__link">
683 General Usage
684 </a>
685 </li>
686
687
688
689
690
691
692
693
694 <li class="md-nav__item md-nav__item--nested">
695
696
697 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_2" type="checkbox" id="__nav_4_2" >
698
699 <label class="md-nav__link" for="__nav_4_2">
700 New API
701 <span class="md-nav__icon md-icon"></span>
702 </label>
703 <nav class="md-nav" aria-label="New API" data-md-level="2">
704 <label class="md-nav__title" for="__nav_4_2">
705 <span class="md-nav__icon md-icon"></span>
706 New API
707 </label>
708 <ul class="md-nav__list" data-md-scrollfix>
709
710
711
712
713
714 <li class="md-nav__item">
715 <a href="../../javascript/new-api_writing-a-module/" class="md-nav__link">
716 Writing a module
717 </a>
718 </li>
719
720
721
722
723
724
725
726 <li class="md-nav__item">
727 <a href="../../javascript/new-api_data-structures/" class="md-nav__link">
728 Data Structures
729 </a>
730 </li>
731
732
733
734
735
736
737
738 <li class="md-nav__item">
739 <a href="../../javascript/new-api_core/" class="md-nav__link">
740 Core Functions
741 </a>
742 </li>
743
744
745
746
747
748
749
750 <li class="md-nav__item">
751 <a href="../../javascript/new-api_dom/" class="md-nav__link">
752 DOM
753 </a>
754 </li>
755
756
757
758
759
760
761
762 <li class="md-nav__item">
763 <a href="../../javascript/new-api_events/" class="md-nav__link">
764 Event Handling
765 </a>
766 </li>
767
768
769
770
771
772
773
774 <li class="md-nav__item">
775 <a href="../../javascript/new-api_ajax/" class="md-nav__link">
776 Ajax
777 </a>
778 </li>
779
780
781
782
783
784
785
786 <li class="md-nav__item">
787 <a href="../../javascript/new-api_dialogs/" class="md-nav__link">
788 Dialogs
789 </a>
790 </li>
791
792
793
794
795
796
797
798 <li class="md-nav__item">
799 <a href="../../javascript/new-api_browser/" class="md-nav__link">
800 Browser and Screen Sizes
801 </a>
802 </li>
803
804
805
806
807
808
809
810 <li class="md-nav__item">
811 <a href="../../javascript/new-api_ui/" class="md-nav__link">
812 User Interface
813 </a>
814 </li>
815
816
817
818 </ul>
819 </nav>
820 </li>
821
822
823
824
825
826
827
828 <li class="md-nav__item">
829 <a href="../../javascript/legacy-api/" class="md-nav__link">
830 Legacy API
831 </a>
832 </li>
833
834
835
836
837
838
839
840 <li class="md-nav__item">
841 <a href="../../javascript/helper-functions/" class="md-nav__link">
842 Helper Functions
843 </a>
844 </li>
845
846
847
848
849
850
851
852 <li class="md-nav__item">
853 <a href="../../javascript/code-snippets/" class="md-nav__link">
854 Code Snippets
855 </a>
856 </li>
857
858
859
860 </ul>
861 </nav>
862 </li>
863
864
865
866
867
868
869
870
871
872
873
874 <li class="md-nav__item md-nav__item--nested">
875
876
877 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
878
879 <label class="md-nav__link" for="__nav_5">
880 Package Components
881 <span class="md-nav__icon md-icon"></span>
882 </label>
883 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
884 <label class="md-nav__title" for="__nav_5">
885 <span class="md-nav__icon md-icon"></span>
886 Package Components
887 </label>
888 <ul class="md-nav__list" data-md-scrollfix>
889
890
891
892
893
894 <li class="md-nav__item">
895 <a href="../../package/package-xml/" class="md-nav__link">
896 package.xml
897 </a>
898 </li>
899
900
901
902
903
904
905
906
907 <li class="md-nav__item md-nav__item--nested">
908
909
910 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
911
912 <label class="md-nav__link" for="__nav_5_2">
913 PIPs
914 <span class="md-nav__icon md-icon"></span>
915 </label>
916 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
917 <label class="md-nav__title" for="__nav_5_2">
918 <span class="md-nav__icon md-icon"></span>
919 PIPs
920 </label>
921 <ul class="md-nav__list" data-md-scrollfix>
922
923
924
925
926
927 <li class="md-nav__item">
928 <a href="../../package/pip/" class="md-nav__link">
929 Overview
930 </a>
931 </li>
932
933
934
935
936
937
938
939 <li class="md-nav__item">
940 <a href="../../package/pip/acl-option/" class="md-nav__link">
941 aclOption
942 </a>
943 </li>
944
945
946
947
948
949
950
951 <li class="md-nav__item">
952 <a href="../../package/pip/acp-menu/" class="md-nav__link">
953 acpMenu
954 </a>
955 </li>
956
957
958
959
960
961
962
963 <li class="md-nav__item">
964 <a href="../../package/pip/acp-search-provider/" class="md-nav__link">
965 acpSearchProvider
966 </a>
967 </li>
968
969
970
971
972
973
974
975 <li class="md-nav__item">
976 <a href="../../package/pip/acp-template/" class="md-nav__link">
977 acpTemplate
978 </a>
979 </li>
980
981
982
983
984
985
986
987 <li class="md-nav__item">
988 <a href="../../package/pip/bbcode/" class="md-nav__link">
989 bbcode
990 </a>
991 </li>
992
993
994
995
996
997
998
999 <li class="md-nav__item">
1000 <a href="../../package/pip/box/" class="md-nav__link">
1001 box
1002 </a>
1003 </li>
1004
1005
1006
1007
1008
1009
1010
1011 <li class="md-nav__item">
1012 <a href="../../package/pip/clipboard-action/" class="md-nav__link">
1013 clipboardAction
1014 </a>
1015 </li>
1016
1017
1018
1019
1020
1021
1022
1023 <li class="md-nav__item">
1024 <a href="../../package/pip/core-object/" class="md-nav__link">
1025 coreObject
1026 </a>
1027 </li>
1028
1029
1030
1031
1032
1033
1034
1035 <li class="md-nav__item">
1036 <a href="../../package/pip/cronjob/" class="md-nav__link">
1037 cronjob
1038 </a>
1039 </li>
1040
1041
1042
1043
1044
1045
1046
1047 <li class="md-nav__item">
1048 <a href="../../package/pip/event-listener/" class="md-nav__link">
1049 eventListener
1050 </a>
1051 </li>
1052
1053
1054
1055
1056
1057
1058
1059 <li class="md-nav__item">
1060 <a href="../../package/pip/file/" class="md-nav__link">
1061 file
1062 </a>
1063 </li>
1064
1065
1066
1067
1068
1069
1070
1071 <li class="md-nav__item">
1072 <a href="../../package/pip/language/" class="md-nav__link">
1073 language
1074 </a>
1075 </li>
1076
1077
1078
1079
1080
1081
1082
1083 <li class="md-nav__item">
1084 <a href="../../package/pip/media-provider/" class="md-nav__link">
1085 mediaProvider
1086 </a>
1087 </li>
1088
1089
1090
1091
1092
1093
1094
1095 <li class="md-nav__item">
1096 <a href="../../package/pip/menu/" class="md-nav__link">
1097 menu
1098 </a>
1099 </li>
1100
1101
1102
1103
1104
1105
1106
1107 <li class="md-nav__item">
1108 <a href="../../package/pip/menu-item/" class="md-nav__link">
1109 menuItem
1110 </a>
1111 </li>
1112
1113
1114
1115
1116
1117
1118
1119 <li class="md-nav__item">
1120 <a href="../../package/pip/object-type/" class="md-nav__link">
1121 objectType
1122 </a>
1123 </li>
1124
1125
1126
1127
1128
1129
1130
1131 <li class="md-nav__item">
1132 <a href="../../package/pip/object-type-definition/" class="md-nav__link">
1133 objectTypeDefinition
1134 </a>
1135 </li>
1136
1137
1138
1139
1140
1141
1142
1143 <li class="md-nav__item">
1144 <a href="../../package/pip/option/" class="md-nav__link">
1145 option
1146 </a>
1147 </li>
1148
1149
1150
1151
1152
1153
1154
1155 <li class="md-nav__item">
1156 <a href="../../package/pip/page/" class="md-nav__link">
1157 page
1158 </a>
1159 </li>
1160
1161
1162
1163
1164
1165
1166
1167 <li class="md-nav__item">
1168 <a href="../../package/pip/pip/" class="md-nav__link">
1169 pip
1170 </a>
1171 </li>
1172
1173
1174
1175
1176
1177
1178
1179 <li class="md-nav__item">
1180 <a href="../../package/pip/script/" class="md-nav__link">
1181 script
1182 </a>
1183 </li>
1184
1185
1186
1187
1188
1189
1190
1191 <li class="md-nav__item">
1192 <a href="../../package/pip/smiley/" class="md-nav__link">
1193 smiley
1194 </a>
1195 </li>
1196
1197
1198
1199
1200
1201
1202
1203 <li class="md-nav__item">
1204 <a href="../../package/pip/sql/" class="md-nav__link">
1205 sql
1206 </a>
1207 </li>
1208
1209
1210
1211
1212
1213
1214
1215 <li class="md-nav__item">
1216 <a href="../../package/pip/style/" class="md-nav__link">
1217 style
1218 </a>
1219 </li>
1220
1221
1222
1223
1224
1225
1226
1227 <li class="md-nav__item">
1228 <a href="../../package/pip/template/" class="md-nav__link">
1229 template
1230 </a>
1231 </li>
1232
1233
1234
1235
1236
1237
1238
1239 <li class="md-nav__item">
1240 <a href="../../package/pip/template-listener/" class="md-nav__link">
1241 templateListener
1242 </a>
1243 </li>
1244
1245
1246
1247
1248
1249
1250
1251 <li class="md-nav__item">
1252 <a href="../../package/pip/user-group-option/" class="md-nav__link">
1253 userGroupOption
1254 </a>
1255 </li>
1256
1257
1258
1259
1260
1261
1262
1263 <li class="md-nav__item">
1264 <a href="../../package/pip/user-menu/" class="md-nav__link">
1265 userMenu
1266 </a>
1267 </li>
1268
1269
1270
1271
1272
1273
1274
1275 <li class="md-nav__item">
1276 <a href="../../package/pip/user-notification-event/" class="md-nav__link">
1277 userNotificationEvent
1278 </a>
1279 </li>
1280
1281
1282
1283
1284
1285
1286
1287 <li class="md-nav__item">
1288 <a href="../../package/pip/user-option/" class="md-nav__link">
1289 userOption
1290 </a>
1291 </li>
1292
1293
1294
1295
1296
1297
1298
1299 <li class="md-nav__item">
1300 <a href="../../package/pip/user-profile-menu/" class="md-nav__link">
1301 userProfileMenu
1302 </a>
1303 </li>
1304
1305
1306
1307 </ul>
1308 </nav>
1309 </li>
1310
1311
1312
1313
1314
1315
1316
1317 <li class="md-nav__item">
1318 <a href="../../package/database-php-api/" class="md-nav__link">
1319 Database PHP API
1320 </a>
1321 </li>
1322
1323
1324
1325 </ul>
1326 </nav>
1327 </li>
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339 <li class="md-nav__item md-nav__item--nested">
1340
1341
1342 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1343
1344 <label class="md-nav__link" for="__nav_6">
1345 Migration
1346 <span class="md-nav__icon md-icon"></span>
1347 </label>
1348 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1349 <label class="md-nav__title" for="__nav_6">
1350 <span class="md-nav__icon md-icon"></span>
1351 Migration
1352 </label>
1353 <ul class="md-nav__list" data-md-scrollfix>
1354
1355
1356
1357
1358
1359
1360 <li class="md-nav__item md-nav__item--nested">
1361
1362
1363 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1364
1365 <label class="md-nav__link" for="__nav_6_1">
1366 Migrating from WSC 5.3
1367 <span class="md-nav__icon md-icon"></span>
1368 </label>
1369 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1370 <label class="md-nav__title" for="__nav_6_1">
1371 <span class="md-nav__icon md-icon"></span>
1372 Migrating from WSC 5.3
1373 </label>
1374 <ul class="md-nav__list" data-md-scrollfix>
1375
1376
1377
1378
1379
1380 <li class="md-nav__item">
1381 <a href="../../migration/wsc53/php/" class="md-nav__link">
1382 PHP API
1383 </a>
1384 </li>
1385
1386
1387
1388
1389
1390
1391
1392 <li class="md-nav__item">
1393 <a href="../../migration/wsc53/session/" class="md-nav__link">
1394 Session Handling and Authentication
1395 </a>
1396 </li>
1397
1398
1399
1400
1401
1402
1403
1404 <li class="md-nav__item">
1405 <a href="../../migration/wsc53/javascript/" class="md-nav__link">
1406 JavaScript
1407 </a>
1408 </li>
1409
1410
1411
1412
1413
1414
1415
1416 <li class="md-nav__item">
1417 <a href="../../migration/wsc53/templates/" class="md-nav__link">
1418 Templates
1419 </a>
1420 </li>
1421
1422
1423
1424
1425
1426
1427
1428 <li class="md-nav__item">
1429 <a href="../../migration/wsc53/libraries/" class="md-nav__link">
1430 Third Party Libraries
1431 </a>
1432 </li>
1433
1434
1435
1436 </ul>
1437 </nav>
1438 </li>
1439
1440
1441
1442
1443
1444
1445
1446
1447 <li class="md-nav__item md-nav__item--nested">
1448
1449
1450 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1451
1452 <label class="md-nav__link" for="__nav_6_2">
1453 Migrating from WSC 5.2
1454 <span class="md-nav__icon md-icon"></span>
1455 </label>
1456 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1457 <label class="md-nav__title" for="__nav_6_2">
1458 <span class="md-nav__icon md-icon"></span>
1459 Migrating from WSC 5.2
1460 </label>
1461 <ul class="md-nav__list" data-md-scrollfix>
1462
1463
1464
1465
1466
1467 <li class="md-nav__item">
1468 <a href="../../migration/wsc52/php/" class="md-nav__link">
1469 PHP API
1470 </a>
1471 </li>
1472
1473
1474
1475
1476
1477
1478
1479 <li class="md-nav__item">
1480 <a href="../../migration/wsc52/templates/" class="md-nav__link">
1481 Templates and Languages
1482 </a>
1483 </li>
1484
1485
1486
1487
1488
1489
1490
1491 <li class="md-nav__item">
1492 <a href="../../migration/wsc52/libraries/" class="md-nav__link">
1493 Third Party Libraries
1494 </a>
1495 </li>
1496
1497
1498
1499 </ul>
1500 </nav>
1501 </li>
1502
1503
1504
1505
1506
1507
1508
1509
1510 <li class="md-nav__item md-nav__item--nested">
1511
1512
1513 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1514
1515 <label class="md-nav__link" for="__nav_6_3">
1516 Migrating from WSC 3.1
1517 <span class="md-nav__icon md-icon"></span>
1518 </label>
1519 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1520 <label class="md-nav__title" for="__nav_6_3">
1521 <span class="md-nav__icon md-icon"></span>
1522 Migrating from WSC 3.1
1523 </label>
1524 <ul class="md-nav__list" data-md-scrollfix>
1525
1526
1527
1528
1529
1530 <li class="md-nav__item">
1531 <a href="../../migration/wsc31/php/" class="md-nav__link">
1532 PHP API
1533 </a>
1534 </li>
1535
1536
1537
1538 </ul>
1539 </nav>
1540 </li>
1541
1542
1543
1544
1545
1546
1547
1548
1549 <li class="md-nav__item md-nav__item--nested">
1550
1551
1552 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1553
1554 <label class="md-nav__link" for="__nav_6_4">
1555 Migrating from WSC 3.0
1556 <span class="md-nav__icon md-icon"></span>
1557 </label>
1558 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1559 <label class="md-nav__title" for="__nav_6_4">
1560 <span class="md-nav__icon md-icon"></span>
1561 Migrating from WSC 3.0
1562 </label>
1563 <ul class="md-nav__list" data-md-scrollfix>
1564
1565
1566
1567
1568
1569 <li class="md-nav__item">
1570 <a href="../../migration/wsc30/php/" class="md-nav__link">
1571 PHP API
1572 </a>
1573 </li>
1574
1575
1576
1577
1578
1579
1580
1581 <li class="md-nav__item">
1582 <a href="../../migration/wsc30/javascript/" class="md-nav__link">
1583 JavaScript API
1584 </a>
1585 </li>
1586
1587
1588
1589
1590
1591
1592
1593 <li class="md-nav__item">
1594 <a href="../../migration/wsc30/templates/" class="md-nav__link">
1595 Templates
1596 </a>
1597 </li>
1598
1599
1600
1601
1602
1603
1604
1605 <li class="md-nav__item">
1606 <a href="../../migration/wsc30/css/" class="md-nav__link">
1607 CSS
1608 </a>
1609 </li>
1610
1611
1612
1613
1614
1615
1616
1617 <li class="md-nav__item">
1618 <a href="../../migration/wsc30/package/" class="md-nav__link">
1619 Package Components
1620 </a>
1621 </li>
1622
1623
1624
1625 </ul>
1626 </nav>
1627 </li>
1628
1629
1630
1631
1632
1633
1634
1635
1636 <li class="md-nav__item md-nav__item--nested">
1637
1638
1639 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1640
1641 <label class="md-nav__link" for="__nav_6_5">
1642 Migrating from WCF 2.1
1643 <span class="md-nav__icon md-icon"></span>
1644 </label>
1645 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1646 <label class="md-nav__title" for="__nav_6_5">
1647 <span class="md-nav__icon md-icon"></span>
1648 Migrating from WCF 2.1
1649 </label>
1650 <ul class="md-nav__list" data-md-scrollfix>
1651
1652
1653
1654
1655
1656 <li class="md-nav__item">
1657 <a href="../../migration/wcf21/php/" class="md-nav__link">
1658 PHP API
1659 </a>
1660 </li>
1661
1662
1663
1664
1665
1666
1667
1668 <li class="md-nav__item">
1669 <a href="../../migration/wcf21/templates/" class="md-nav__link">
1670 Templates
1671 </a>
1672 </li>
1673
1674
1675
1676
1677
1678
1679
1680 <li class="md-nav__item">
1681 <a href="../../migration/wcf21/css/" class="md-nav__link">
1682 CSS
1683 </a>
1684 </li>
1685
1686
1687
1688
1689
1690
1691
1692 <li class="md-nav__item">
1693 <a href="../../migration/wcf21/package/" class="md-nav__link">
1694 Package Components
1695 </a>
1696 </li>
1697
1698
1699
1700 </ul>
1701 </nav>
1702 </li>
1703
1704
1705
1706 </ul>
1707 </nav>
1708 </li>
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720 <li class="md-nav__item md-nav__item--nested">
1721
1722
1723 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1724
1725 <label class="md-nav__link" for="__nav_7">
1726 Tutorials
1727 <span class="md-nav__icon md-icon"></span>
1728 </label>
1729 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1730 <label class="md-nav__title" for="__nav_7">
1731 <span class="md-nav__icon md-icon"></span>
1732 Tutorials
1733 </label>
1734 <ul class="md-nav__list" data-md-scrollfix>
1735
1736
1737
1738
1739
1740
1741 <li class="md-nav__item md-nav__item--nested">
1742
1743
1744 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1745
1746 <label class="md-nav__link" for="__nav_7_1">
1747 Tutorial Series
1748 <span class="md-nav__icon md-icon"></span>
1749 </label>
1750 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1751 <label class="md-nav__title" for="__nav_7_1">
1752 <span class="md-nav__icon md-icon"></span>
1753 Tutorial Series
1754 </label>
1755 <ul class="md-nav__list" data-md-scrollfix>
1756
1757
1758
1759
1760
1761 <li class="md-nav__item">
1762 <a href="../../tutorial/series/overview/" class="md-nav__link">
1763 Overview
1764 </a>
1765 </li>
1766
1767
1768
1769
1770
1771
1772
1773 <li class="md-nav__item">
1774 <a href="../../tutorial/series/part_1/" class="md-nav__link">
1775 Part 1
1776 </a>
1777 </li>
1778
1779
1780
1781
1782
1783
1784
1785 <li class="md-nav__item">
1786 <a href="../../tutorial/series/part_2/" class="md-nav__link">
1787 Part 2
1788 </a>
1789 </li>
1790
1791
1792
1793
1794
1795
1796
1797 <li class="md-nav__item">
1798 <a href="../../tutorial/series/part_3/" class="md-nav__link">
1799 Part 3
1800 </a>
1801 </li>
1802
1803
1804
1805 </ul>
1806 </nav>
1807 </li>
1808
1809
1810
1811 </ul>
1812 </nav>
1813 </li>
1814
1815
1816
1817 </ul>
1818 </nav>
1819 </div>
1820 </div>
1821 </div>
1822
1823
1824
1825 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1826 <div class="md-sidebar__scrollwrap">
1827 <div class="md-sidebar__inner">
1828
1829 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1830
1831
1832
1833
1834
1835 <label class="md-nav__title" for="__toc">
1836 <span class="md-nav__icon md-icon"></span>
1837 Table of contents
1838 </label>
1839 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1840
1841 <li class="md-nav__item">
1842 <a href="#spl-exceptions" class="md-nav__link">
1843 SPL Exceptions
1844 </a>
1845
1846 </li>
1847
1848 <li class="md-nav__item">
1849 <a href="#custom-exceptions" class="md-nav__link">
1850 Custom Exceptions
1851 </a>
1852
1853 </li>
1854
1855 </ul>
1856
1857 </nav>
1858 </div>
1859 </div>
1860 </div>
1861
1862
1863 <div class="md-content" data-md-component="content">
1864 <article class="md-content__inner md-typeset">
1865
1866
1867 <a href="https://github.com/WoltLab/docs.woltlab.com/edit/5.4/docs/php/exceptions.md" title="Edit this page" class="md-content__button md-icon">
1868 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
1869 </a>
1870
1871
1872 <h1 id="exceptions">Exceptions<a class="headerlink" href="#exceptions" title="Permanent link">#</a></h1>
1873 <h2 id="spl-exceptions">SPL Exceptions<a class="headerlink" href="#spl-exceptions" title="Permanent link">#</a></h2>
1874 <p>The <a href="https://secure.php.net/manual/en/book.spl.php">Standard PHP Library (SPL)</a> provides some <a href="https://secure.php.net/manual/en/spl.exceptions.php">exceptions</a> that should be used whenever possible.</p>
1875 <h2 id="custom-exceptions">Custom Exceptions<a class="headerlink" href="#custom-exceptions" title="Permanent link">#</a></h2>
1876 <div class="admonition warning">
1877 <p class="admonition-title">Do not use <code>wcf\system\exception\SystemException</code> anymore, use specific exception classes!</p>
1878 </div>
1879 <p>The following table contains a list of custom exceptions that are commonly used.
1880 All of the exceptions are found in the <code>wcf\system\exception</code> namespace.</p>
1881 <table>
1882 <thead>
1883 <tr>
1884 <th>Class name</th>
1885 <th>(examples) when to use</th>
1886 </tr>
1887 </thead>
1888 <tbody>
1889 <tr>
1890 <td><code>IllegalLinkException</code></td>
1891 <td>access to a page that belongs to a non-existing object, executing actions on specific non-existing objects (is shown as http 404 error to the user)</td>
1892 </tr>
1893 <tr>
1894 <td><code>ImplementationException</code></td>
1895 <td>a class does not implement an expected interface</td>
1896 </tr>
1897 <tr>
1898 <td><code>InvalidObjectArgument</code></td>
1899 <td><span class="label label-info">5.4+</span> API method support generic objects but specific implementation requires objects of specific (sub)class and different object is given</td>
1900 </tr>
1901 <tr>
1902 <td><code>InvalidObjectTypeException</code></td>
1903 <td>object type is not of an expected object type definition</td>
1904 </tr>
1905 <tr>
1906 <td><code>InvalidSecurityTokenException</code></td>
1907 <td>given security token does not match the security token of the active user's session</td>
1908 </tr>
1909 <tr>
1910 <td><code>ParentClassException</code></td>
1911 <td>a class does not extend an expected (parent) class</td>
1912 </tr>
1913 <tr>
1914 <td><code>PermissionDeniedException</code></td>
1915 <td>page access without permission, action execution without permission (is shown as http 403 error to the user)</td>
1916 </tr>
1917 <tr>
1918 <td><code>UserInputException</code></td>
1919 <td>user input does not pass validation</td>
1920 </tr>
1921 </tbody>
1922 </table>
1923
1924
1925
1926
1927 <hr>
1928 <div class="md-source-date">
1929 <small>
1930
1931 Last update: 2021-01-12
1932
1933 </small>
1934 </div>
1935
1936
1937
1938
1939
1940
1941
1942
1943 </article>
1944 </div>
1945 </div>
1946 </main>
1947
1948
1949 <footer class="md-footer">
1950
1951 <nav class="md-footer__inner md-grid" aria-label="Footer">
1952
1953 <a href="../database-access/" class="md-footer__link md-footer__link--prev" rel="prev">
1954 <div class="md-footer__button md-icon">
1955 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
1956 </div>
1957 <div class="md-footer__title">
1958 <div class="md-ellipsis">
1959 <span class="md-footer__direction">
1960 Previous
1961 </span>
1962 Database Access
1963 </div>
1964 </div>
1965 </a>
1966
1967
1968 <a href="../api/caches/" class="md-footer__link md-footer__link--next" rel="next">
1969 <div class="md-footer__title">
1970 <div class="md-ellipsis">
1971 <span class="md-footer__direction">
1972 Next
1973 </span>
1974 Caches
1975 </div>
1976 </div>
1977 <div class="md-footer__button md-icon">
1978 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
1979 </div>
1980 </a>
1981
1982 </nav>
1983
1984 <div class="md-footer-meta md-typeset">
1985 <div class="md-footer-meta__inner md-grid">
1986 <div class="md-footer-copyright">
1987
1988 <div class="md-footer-copyright__highlight">
1989 Copyright © 2020 WoltLab GmbH
1990 </div>
1991
1992 Made with
1993 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1994 Material for MkDocs
1995 </a>
1996
1997 </div>
1998 <div class="md-footer-copyright">
1999 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2000 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2001 </div>
2002 </div>
2003 </div>
2004 </footer>
2005
2006 </div>
2007 <div class="md-dialog" data-md-component="dialog">
2008 <div class="md-dialog__inner md-typeset"></div>
2009 </div>
2010 <script id="__config" type="application/json">{"base": "../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../assets/javascripts/workers/search.fb4a9340.min.js", "version": {"provider": "mike"}}</script>
2011
2012
2013 <script src="../../assets/javascripts/bundle.5cf3e710.min.js"></script>
2014
2015
2016 </body>
2017 </html>