xref: /PHP-8.1/Zend/tests/throw/001.phpt (revision fbe30592)
1--TEST--
2throw expression
3--FILE--
4<?php
5
6try {
7    $result = true && throw new Exception("true && throw");
8    var_dump($result);
9} catch (Exception $e) {
10    var_dump($e->getMessage());
11}
12
13try {
14    $result = false && throw new Exception("false && throw");
15    var_dump($result);
16} catch (Exception $e) {
17    var_dump($e->getMessage());
18}
19
20try {
21    $result = true and throw new Exception("true and throw");
22    var_dump($result);
23} catch (Exception $e) {
24    var_dump($e->getMessage());
25}
26
27try {
28    $result = false and throw new Exception("false and throw");
29    var_dump($result);
30} catch (Exception $e) {
31    var_dump($e->getMessage());
32}
33
34try {
35    $result = true || throw new Exception("true || throw");
36    var_dump($result);
37} catch (Exception $e) {
38    var_dump($e->getMessage());
39}
40
41try {
42    $result = false || throw new Exception("false || throw");
43    var_dump($result);
44} catch (Exception $e) {
45    var_dump($e->getMessage());
46}
47
48try {
49    $result = true or throw new Exception("true or throw");
50    var_dump($result);
51} catch (Exception $e) {
52    var_dump($e->getMessage());
53}
54
55try {
56    $result = false or throw new Exception("false or throw");
57    var_dump($result);
58} catch (Exception $e) {
59    var_dump($e->getMessage());
60}
61
62try {
63    $result = null ?? throw new Exception("null ?? throw");
64    var_dump($result);
65} catch (Exception $e) {
66    var_dump($e->getMessage());
67}
68
69try {
70    $result = "foo" ?? throw new Exception('"foo" ?? throw');
71    var_dump($result);
72} catch (Exception $e) {
73    var_dump($e->getMessage());
74}
75
76try {
77    $result = null ?: throw new Exception("null ?: throw");
78    var_dump($result);
79} catch (Exception $e) {
80    var_dump($e->getMessage());
81}
82
83try {
84    $result = "foo" ?: throw new Exception('"foo" ?: throw');
85    var_dump($result);
86} catch (Exception $e) {
87    var_dump($e->getMessage());
88}
89
90try {
91    $callable = fn() => throw new Exception("fn() => throw");
92    var_dump("not yet");
93    $callable();
94} catch (Exception $e) {
95    var_dump($e->getMessage());
96}
97
98$result = "bar";
99try {
100    $result = throw new Exception();
101} catch (Exception $e) {}
102var_dump($result);
103
104try {
105    var_dump(
106        throw new Exception("exception 1"),
107        throw new Exception("exception 2")
108    );
109} catch (Exception $e) {
110    var_dump($e->getMessage());
111}
112
113try {
114    $result = true ? true : throw new Exception("true ? true : throw");
115    var_dump($result);
116} catch (Exception $e) {
117    var_dump($e->getMessage());
118}
119
120try {
121    $result = false ? true : throw new Exception("false ? true : throw");
122    var_dump($result);
123} catch (Exception $e) {
124    var_dump($e->getMessage());
125}
126
127try {
128    throw new Exception() + 1;
129} catch (Throwable $e) {
130    var_dump($e->getMessage());
131}
132
133try {
134    throw $exception = new Exception('throw $exception = new Exception();');
135} catch (Exception $e) {}
136var_dump($exception->getMessage());
137
138try {
139    $exception = null;
140    throw $exception ??= new Exception('throw $exception ??= new Exception();');
141} catch (Exception $e) {}
142var_dump($exception->getMessage());
143
144try {
145    throw null ?? new Exception('throw null ?? new Exception();');
146} catch (Exception $e) {
147    var_dump($e->getMessage());
148}
149
150?>
151--EXPECT--
152string(13) "true && throw"
153bool(false)
154string(14) "true and throw"
155bool(false)
156bool(true)
157string(14) "false || throw"
158bool(true)
159string(14) "false or throw"
160string(13) "null ?? throw"
161string(3) "foo"
162string(13) "null ?: throw"
163string(3) "foo"
164string(7) "not yet"
165string(13) "fn() => throw"
166string(3) "bar"
167string(11) "exception 1"
168bool(true)
169string(20) "false ? true : throw"
170string(42) "Unsupported operand types: Exception + int"
171string(35) "throw $exception = new Exception();"
172string(37) "throw $exception ??= new Exception();"
173string(30) "throw null ?? new Exception();"
174