Comment On It's Like Calling Assert

When we go from language to language and platform to platform, a whole lot of “little things” change about how we write code: typing, syntax, error handling, etc. Good developers try to adapt to a new language by reading the documentation, asking experienced colleagues, and trying to follow best practices. “Certain Developers,” however, try to make the language adapt to their way of doing things. [expand full text]
« PrevPage 1Next »

Re: It's Like Calling Assert

2007-06-11 09:03 • by Roman (unregistered)
Whoa! This is some neat code. :)

Re: It's Like Calling Assert

2007-06-11 09:09 • by ParkinT
Isn't it ironic that an article, beginning with a statement about "typing", has this typographical error?
... change about how we write ode:

Re: It's Like Calling Assert

2007-06-11 09:13 • by swapo
140557 in reply to 140556
ParkinT:
Isn't it ironic that an article, beginning with a statement about "typing", has this typographical error?
... change about how we write ode:


You may just write code. When some of us do it, it's even an ode ;-)

Re: It's Like Calling Assert

2007-06-11 09:14 • by Keith Hackney (unregistered)
The Real WTF is that this site crashed for a couple of minutes just before this new article appeared. Could this be the repeated hammering of F5 by the fisters?

captcha = dreadlocks

Re: It's Like Calling Assert

2007-06-11 09:18 • by Thomas (unregistered)
140559 in reply to 140557
swapo:
ParkinT:
Isn't it ironic that an article, beginning with a statement about "typing", has this typographical error?
... change about how we write ode:


You may just write code. When some of us do it, it's even an ode ;-)


"to their ay of doing things"

Making an ode or an ay?
;-)

Re: It's Like Calling Assert

2007-06-11 09:18 • by bstorer
140560 in reply to 140556
ParkinT:
Isn't it ironic that an article, beginning with a statement about "typing", has this typographical error?
... change about how we write ode:

Or this one: try to make the language adapt to their ay of doing things.

Re: It's Like Calling Assert

2007-06-11 09:32 • by Anonymous Coward (unregistered)
Well, the biggest WTF is that the code is in Java for sure... And, he clearly uses the exception to get a stack trace... however, IIRC stack trace is initialized upon construction, not when the throwable is thrown.

Re: It's Like Calling Assert

2007-06-11 09:33 • by Tachyomatic (unregistered)
Since when did .net have the final keyword?

craaazy indeed!

Re: It's Like Calling Assert

2007-06-11 09:33 • by T$ (unregistered)
140564 in reply to 140557
Yeah, as the author says, it's just his "ay" of doing it.

CAPTCHA: burned, haha

Re: It's Like Calling Assert

2007-06-11 09:33 • by swapo
An Ode!
Aye Captain!
Arrrr

Re: It's Like Calling Assert

2007-06-11 09:40 • by Anonymous Coward (unregistered)
140566 in reply to 140562
Anonymous Coward:
Well, the biggest WTF is that the code is in Java for sure... And, he clearly uses the exception to get a stack trace... however, IIRC stack trace is initialized upon construction, not when the throwable is thrown.


If the error was truly fatal and there was no point in
continuing the execution, he should have thrown an Error.

To get the stack trace in logs, he could have used


protected final void BUG (String msg) {
logger.fatal (msg, new RuntimeException("Assertion failure"));
System.exit (1);
}

Re: It's Like Calling Assert

2007-06-11 10:06 • by APH
For what the code is supposed to do (in the eyes of the original coder) it is fairly concise. That's what a WTF is all about - well written code to do the exactly wrong thing!

Re: It's Like Calling Assert

2007-06-11 10:12 • by JamesCurran
Let us not overlook that he creates a completely empty Exception ---- and then logs it, as if it had some useful information......

Re: It's Like Calling Assert

2007-06-11 10:20 • by rycamor (unregistered)
An Ode to the Ay of Certain Developers:

Forsooth! And how doth the keyboard clack
As when, among twin perils of unnecessary loops and strange Inner Platforms,
Bestride the angry waters of unfamiliar syntax and new paradigms
Doth the Certain Developer lament: alas and alack!
My brain hurteth so: ay ay ay
This mountain, this Learning Curve, I durst not climb.

But wherein his refuge? Of what dost thou speak?

I speak of the inevitable temptation, to wit:
As Alexander crossed the Hellespont,
As Odysseus braved maelstrom,
Verily as Hercules confronted the Hydra,
So our hero confronts the Language Beast,
And vanquishes the angry unknown, be it syntax or context,
With an onslaught, truly a fusillade: the Wrapper of our Discontent,
That the Language may, to his will be bent.

Re: It's Like Calling Assert

2007-06-11 10:21 • by Lothar (unregistered)
140572 in reply to 140562
> however, IIRC stack trace is initialized upon construction, not when the throwable is thrown.

AFAIR exceptions on Java 1.0 and 1.1 have to be thrown to get the stacktrace filled in. If the code is older, this might be a correct attempt to get the assert-function working.


Regards, Lothar

Re: It's Like Calling Assert

2007-06-11 10:34 • by Mike Dimmick (unregistered)
If you want a stack trace in .NET, call Environment.StackTrace.

Re: It's Like Calling Assert

2007-06-11 10:37 • by David (unregistered)
I once wrote:

/**
* Does what it says on the tin
*/
public static void crash(){
System.exit(1);
}

... it worked every time...

Re: It's Like Calling Assert

2007-06-11 10:38 • by AbbydonKrafts
140576 in reply to 140571
An Ode to the Ay of Certain Developers


Beautiful *wipes tear from his eye*

Re: It's Like Calling Assert

2007-06-11 10:51 • by anne (unregistered)
140577 in reply to 140571
rycamor:
An Ode to the Ay of Certain Developers:


Oh boy it's a computer geek AND a classics geek! What an awesome combination. Kudos to you!

Re: It's Like Calling Assert

2007-06-11 11:02 • by AbbydonKrafts
140578 in reply to 140571
rycamor:
An Ode to the Ay of Certain Developers:


I just had to format that one and post it on our geek wall. Here's a screenshot of it in Word Print Preview (sorry, no tables involved).



Addendum (2007-06-11 14:33):
I added in "the" and added in a break after the comma in "...unknown, be it". I then printed out the new copy and replaced it on the wall.

Re: It's Like Calling Assert

2007-06-11 11:08 • by rycamor (unregistered)
140579 in reply to 140578
I am duly honored.

BTW, I made a small typo: there should be a "the" in front of "maelstrom".

Re: It's Like Calling Assert

2007-06-11 11:09 • by Fred (unregistered)
I fail to see the wtf, here. I used to write code exactly like this a few years ago, as it was the only know way to get a stack frame in Java.

The real wtf seem to be the speed by which this site is going down the tube (even renaming from "what the fuck" to "worse than failure" made me thin WTF...)

Re: It's Like Calling Assert

2007-06-11 11:16 • by ParkinT
140581 in reply to 140571
rycamor:
An Ode to the Ay of Certain Developers:

Forsooth! And how doth the keyboard clack
As when, among twin perils of unnecessary loops and strange Inner Platforms,
Bestride the angry waters of unfamiliar syntax and new paradigms
Doth the Certain Developer lament: alas and alack!
My brain hurteth so: ay ay ay
This mountain, this Learning Curve, I durst not climb.

But wherein his refuge? Of what dost thou speak?

I speak of the inevitable temptation, to wit:
As Alexander crossed the Hellespont,
As Odysseus braved maelstrom,
Verily as Hercules confronted the Hydra,
So our hero confronts the Language Beast,
And vanquishes the angry unknown, be it syntax or context,
With an onslaught, truly a fusillade: the Wrapper of our Discontent,
That the Language may, to his will be bent.


Your true talents are wasted on mere "code-banging"!
Excellent work.

Re: It's Like Calling Assert

2007-06-11 12:39 • by ThingGuy McGuyThing (unregistered)
140584 in reply to 140565
swapo:
An Ode!
Aye Captain!
Arrrr


Worst. Haiku. Ever.

Re: It's Like Calling Assert

2007-06-11 13:19 • by Calvin Spealman (unregistered)
This is exactly the thing I try to guard against when teaching people to be "pythonic" when writing Python code, and what I am trying to get across in my last blog post Dynamic Hell in Python Names. Moving between languages inevitably drags along both bad and good ideas that all become bad in the new environment.

Re: It's Like Calling Assert

2007-06-11 13:28 • by tmountjr
140596 in reply to 140571
rycamor:
An Ode to the Ay of Certain Developers:

Forsooth! And how doth the keyboard clack
As when, among twin perils of unnecessary loops and strange Inner Platforms,
Bestride the angry waters of unfamiliar syntax and new paradigms
Doth the Certain Developer lament: alas and alack!
My brain hurteth so: ay ay ay
This mountain, this Learning Curve, I durst not climb.

But wherein his refuge? Of what dost thou speak?

I speak of the inevitable temptation, to wit:
As Alexander crossed the Hellespont,
As Odysseus braved maelstrom,
Verily as Hercules confronted the Hydra,
So our hero confronts the Language Beast,
And vanquishes the angry unknown, be it syntax or context,
With an onslaught, truly a fusillade: the Wrapper of our Discontent,
That the Language may, to his will be bent.



You, sir, have earned the title of Poet Laureate for WorseThanFailure.com. I bow to your poetry skillz.

Re: It's Like Calling Assert

2007-06-11 14:02 • by dllexport
140602 in reply to 140555
That's almost the same as the error handling at a previous job:

try
{
// do crap here
} catch (...) {
cout << "Abnormal program termination." << endl;
exit(1);
}

Re: It's Like Calling Assert

2007-06-11 14:33 • by Frost (unregistered)
140604 in reply to 140575
David:
I once wrote:

/**
* Does what it says on the tin
*/
public static void crash(){
System.exit(1);
}

... it worked every time...


The REAL WTF is that you think the function name is an accurate description of what happens.

Re: It's Like Calling Assert

2007-06-11 15:14 • by Onaka The Kaka (unregistered)
I wouldn't really call this a WTF, it's just an example of someone who doesn't understand Exceptions.

Re: It's Like Calling Assert

2007-06-11 15:16 • by woohoo (unregistered)
140608 in reply to 140559
Thomas:
swapo:
ParkinT:
Isn't it ironic that an article, beginning with a statement about "typing", has this typographical error?
... change about how we write ode:


You may just write code. When some of us do it, it's even an ode ;-)


"to their ay of doing things"

Making an ode or an ay?
;-)


Which game might it have been that ruined the "c" and "w" keys on Alex' keyboard? ;o)

BTW, it's Java, not C#, and another minor WTF lurks in the disregard of proper Java naming conventions, i.e. the notation of the function name (all caps...).

Said developer is either an AOL user or a Csharpie all right... ;o))

Re: It's Like Calling Assert

2007-06-11 15:42 • by FredSaw
a whole lot of “little things” change about how we write ode
Little, yes... fundamental.

You must remember this:
A catch is just a catch;
a try is just a try.
The fundamental things apply
As platforms go by.

Re: It's Like Calling Assert

2007-06-11 16:21 • by sol (unregistered)
WTF does Assert do anyway? Really.

Does it stop program execution if true? Does it Assert that the value is indeed the value or does it just write the value to a debug window. VB programmers everywhere need to know.

I mean it's not like debuggers are usefully anyway.... I mean really I could manually evaulate all the code in my head in context and find the problem.. right?

Re: It's Like Calling Assert

2007-06-11 17:06 • by Christopher Clark (unregistered)
140647 in reply to 140629
sol:
WTF does Assert do anyway? Really.


Technically, since C doesn't have booleans, assert(false) makes monkeys fly out of your butt. Sideways.

assert(0), on the other hand, prints a message to stderr (which this function doesn't do), and calls abort() to terminate without standard cleanup (which this code also doesn't do). Unless NDEBUG is defined at the moment <assert.h> is included, in which case nothing happens.

Re: It's Like Calling Assert

2007-06-11 17:12 • by Elusive (unregistered)
what good is assert? It's bloody usefull to have when working with non-programming staff, like say, artists.

Telling an artist that "no, 36 is NOT a power of two, but 32 is" is just pointless, because they'll STILL make those textures in incorrect sizes. Put an assert on the build they use for testing thier art, or even on the conversion tools and they'll soon get the message.

Making apps or tool-apps handle incorrect things like that by chopping of bits to the nearest ^2 just makes them lazy and they'll bitch and moan how the code screws thier work up. A controlled crash landing using a custom assert macro however, will make them fix it straight away, or atleast after they've run crying to your desk.

The same thing goes for live game code...screw handling incorrect bone names gracefully. If the game has used a bone called "focus_point" for the last six months, I'm not bloody changing the code because of a typo or making the test build just focuson on the origin. Assert straight away, so they can fix thier own error...after coming to your desk demanding to know why you've broken thier art.

Re: It's Like Calling Assert

2007-06-11 17:17 • by [ICR] (unregistered)
Whats even more of a WTF is that in C# there is:
Debug.Assert(expression);
and in Java:
assert expression;
Or is it somehow different? Am I missing something?

Re: It's Like Calling Assert

2007-06-11 17:38 • by Adrien "Krunch" Kunysz (unregistered)
140657 in reply to 140650
The real WTF is that assert is used in that project too. TIMTOWTDI I guess.

Re: It's Like Calling Assert

2007-06-11 22:00 • by nwbrown
Is the WTF supposed to be that he was so stubborn he refused to give up the assert method of dealing with errors? Because if so, he isn't the only one so stubborn. Java (as of 1.4 I believe) now supports asserts. Granted it doesn't perform a System.exit but instead throws an AssertionError, though than can be problematic when certain people write:

try{
...
}catch(Throwable e) {}

And no, I didn't forget the ellipses in the catch block. I have seen that without anything in there (ok, maybe there was a comment or two).

Re: It's Like Calling Assert

2007-06-12 02:52 • by Bigwig (unregistered)
ROFL...
One of the best WTFs ever!

Re: It's Like Calling Assert

2007-06-12 05:38 • by Bellinghman
140703 in reply to 140647
Christopher Clark:
Technically, since C doesn't have booleans, assert(false) makes monkeys fly out of your butt. Sideways.


Technically, C has booleans - they're called _Bool (also bool if you #include <stdbool.h>). And that same header includes macros for true and false. Section 7.16 of the current C standard.

Re: It's Like Calling Assert

2007-06-12 06:27 • by DOA (unregistered)
140708 in reply to 140571
rycamor:
An Ode to the Ay of Certain Developers:

Forsooth! And how doth the keyboard clack
As when, among twin perils of unnecessary loops and strange Inner Platforms,
Bestride the angry waters of unfamiliar syntax and new paradigms
Doth the Certain Developer lament: alas and alack!
My brain hurteth so: ay ay ay
This mountain, this Learning Curve, I durst not climb.

But wherein his refuge? Of what dost thou speak?

I speak of the inevitable temptation, to wit:
As Alexander crossed the Hellespont,
As Odysseus braved maelstrom,
Verily as Hercules confronted the Hydra,
So our hero confronts the Language Beast,
And vanquishes the angry unknown, be it syntax or context,
With an onslaught, truly a fusillade: the Wrapper of our Discontent,
That the Language may, to his will be bent.



I wish I has as much free time as you

Re: It's Like Calling Assert

2007-06-12 08:39 • by Greg (unregistered)
140715 in reply to 140584
ThingGuy McGuyThing:
swapo:
An Ode!
Aye Captain!
Arrrr


Worst. Haiku. Ever.


Saw a great t-shirt this weekend:

Haikus can be fun.
Sometimes they do not make sense.
Refridgerator.

Re: It's Like Calling Assert

2007-06-12 09:04 • by Random832
140718 in reply to 140647
Christopher Clark:
sol:
WTF does Assert do anyway? Really.


Technically, since C doesn't have booleans, assert(false) makes monkeys fly out of your butt. Sideways.


int false = 1;
assert(false);

I see no problem.

assert(0), on the other hand, prints a message to stderr (which this function doesn't do), and calls abort() to terminate without standard cleanup (which this code also doesn't do). Unless NDEBUG is defined at the moment <assert.h> is included, in which case nothing happens.


actually, something happens - the token sequence ((void)0) is inserted into the code. Exactly that token sequence - it can't be ((void)(0)), ((void)1), or anything else that would be equivalent, it has to be exactly ((void)0).

Re: It's Like Calling Assert

2007-06-12 09:10 • by sol (unregistered)
I gues I am lucky or unfortunate because I never really got to do any real C programming or Java for that matter. So for just laughs we can say Assert is the flip side of On Error Resume Next even though it isn't actually in principal it something like that...

typedef int BOOL;

#define FALSE 0
#define TRUE 1
#define NULL 0 //OMG WTF 0 as in 0x0000

Re: It's Like Calling Assert

2007-06-12 12:45 • by sol (unregistered)
#define MAYBE -1

yes it's now TriState lmao

Re: It's Like Calling Assert

2007-06-12 13:16 • by FredSaw
a whole lot of “little things” change about how we write code
Aw, what'dja correct it for? Now first-time readers are going to be going "WTF?" all the way down through the pun fun.

Re: It's Like Calling Assert

2007-06-14 20:19 • by Scott (unregistered)
141251 in reply to 140607
Onaka the Kaka:
I wouldn't really call this a WTF, it's just an example of someone who doesn't understand Exceptions.

Umm. I suspect you don't quite get the distinction between an assertion and an exception (as traditionally defined).

An exception is used to detect and handle dynamic error conditions arising from the data or the environment - e.g. an over-length string, or running out of file space.

An assertion is not supposed to be used for this: it's used to detect and abort if a condition occurs which can never happen if the logic of the program is correct - e.g. an array is passed as a parameter and its length appears to be negative. You can turn off assertions in a correctly written program, and the behaviour of the program will be completely unchanged - which is obviously not the case for exceptions. C exceptions are great: scatter them liberally to test the invariants and preconditions in your code, and a lot of bugs surface with very little effort. I generally try to make some sort of equivalent in languages which don't directly support assertions, and often bodging something up with an exception is the nearest you can get.

Re: It's Like Calling Assert

2007-06-18 13:35 • by Christopher Clark (unregistered)
141532 in reply to 140703
Bellinghman:
Christopher Clark:
Technically, since C doesn't have booleans, assert(false) makes monkeys fly out of your butt. Sideways.


Technically, C has booleans - they're called _Bool (also bool if you #include <stdbool.h>). And that same header includes macros for true and false. Section 7.16 of the current C standard.


D'oh. My bad, been forced to use an out-of-date compiler for a while now, and apparently it's killing off sections of my brain.

Re: It's Like Calling Assert

2007-06-18 13:59 • by Christopher Clark (unregistered)
141546 in reply to 140718
Random832:
Christopher Clark:
Unless NDEBUG is defined at the moment <assert.h> is included, in which case nothing happens.


actually, something happens - the token sequence ((void)0) is inserted into the code. Exactly that token sequence - it can't be ((void)(0)), ((void)1), or anything else that would be equivalent, it has to be exactly ((void)0).


I was glossing. Yes, it sticks in something to make sure the compilation doesn't issue spurious warnings. At runtime, nothing happens.

Re: It's Like Calling Assert

2007-08-23 08:56 • by Sharp (unregistered)
150866 in reply to 140555
My eyes... the goggles do nothing!!!

Re: It's Like Calling Assert

2008-11-28 21:33 • by 855 (unregistered)
丽水货架
金华货架
衢州货架
余杭货架
萧山货架
临安货架
德清货架
平湖货架
海宁货架
桐乡货架
奉化货架
余姚货架
慈溪货架
诸暨货架
义乌货架
瑞安货架
永嘉货架
安徽货架
合肥货架
芜湖货架
马鞍山货架
铜陵货架
宣城货架
巢湖货架
山东货架
济南货架
轻型货架
轻型货架
中型货架
重型货架
悬臂货架
模具货架
阁楼货架
南京货架
镇江货架
苏州货架
扬州货架
徐州货架
南通货架
盐城货架
淮阴货架
连云港货架
常州货架
浙江货架
无锡货架
上海货架
杭州货架
湖州货架
嘉兴货架
宁波货架
台州货架
绍兴货架
衢州货架
温州货架
金华货架
萧山货架
海宁货架
临安货架
慈溪货架
余姚货架
建德货架
路桥货架
仓储笼
登高车
料箱
液压搬运车
堆垛车
平台车
塑料托盘
工作台
网片
南京网片
镇江网片
苏州网片
南通网片
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
小游戏
激情电影
美容BB霜免费赠送
英语天地
手机游戏下载

设计之家
美容时尚网
美食在线
<p>轻型货架
轻型货架
轻型货架
轻型货架
轻型货架
中型货架
中型货架
中型货架
中型货架
重型货架
重型货架
载物台车
堆垛货架
巧固架
货架
货架
货架
固定小推车
手推车
双层静音推车
铁板手推车
手动液压平台车
提升机
单叉手动液压平台车
双叉手动液压平台车
多层框架车
登高车H1000
塑料托盘
登高车H1400
铁屑车
南京货架
货架
仓储货架
货架公司
货架厂
角钢货架
轻型货架
货架
南京货架
中型货架
重型货架
贯通货架
通廊货架
模具货架
抽屉货架
移动式货架
密集货架
立体货架
阁楼货架
悬臂货架
滚轮式货架
整理架
托盘
钢托盘
塑料托盘
仓储笼
上海仓储笼
江西仓储笼
料箱
钢制料箱
物流台车
登高车
工具柜
浙江工具柜
工具车
安徽工具车
工作台
整理柜
手推车
静音手推车
铁板手推车
搬运车
手动托盘搬运车
液压手动堆垛机
液压手推平台车
圆桶搬运车/油桶搬运车
电动托盘搬运车
高空拣选车
电动/电瓶叉车
库房货架
货架设计
轻型货架
角钢货架
中型货架
中量型货架
重型货架
重量型货架
托盘货架
贯通货架
通廊式货架
阁楼货架
悬臂式货架
模具货架
抽屉货架
辊轮式货架
移动式货架
网片
护栏
隔离网
工具柜
安全工具柜
工具车
移动工具车
置物柜
整理架
挂板架
工作台
线棒货架
输送轨道
输送轨道机
输送带
不锈钢制品
仓储笼
折叠式仓储笼
可堆周转箱
钢托盘
托盘
钢制托盘
网格料箱
料箱
钢料箱
钢制料箱
物流台车
重型货架
镇江塑料托盘
扬州塑料托盘
无锡塑料托盘
塑料托盘
求购货架
轻型货架
中型货架
托盘货架
贯通货架
马鞍山仓储笼
宁波重型货架
杭州轻型货架
杭州中型货架
杭州重型货架
杭州悬臂架
杭州4S店货架
宁波轻型货架
宁波中型货架
盐城货架
南通货架
苏州货架
镇江货架
南京货架
工业货架
嘉兴货架
常州货架
北京货架
辽宁货架
广东货架
河北货架
山西货架
吉林货架
湖南货架
福建货架
天津货架
部队货架
上海货架
青田货架
义乌货架
瑞安货架
温岭货架
舟山货架
诸暨货架
上虞货架
慈溪货架
余姚货架
奉化货架
海宁货架
嘉善货架
平湖货架
临安货架
建德货架
萧山货架
衢州货架
余杭货架
金华货架
温州货架
台州货架
绍兴货架
宁波货架
嘉兴货架
湖州货架
杭州货架
浙江货架
芜湖货架
合肥货架
安徽货架
威海货架
青岛货架
济南货架
山东货架
洛阳货架
河南货架
西安货架
陕西货架
四川货架
武汉货架
湖北货架
句容货架
仪征货架
江都货架
太仓货架
昆山货架
吴江货架
江阴货架
张家港货架
常熟货架
金坛货架
丹阳货架
无锡货架
常州货架
连云港货架
淮阴货架
徐州货架
东台货架
盐城货架
扬州货架
南通货架
苏州货架
镇江货架
南京货架
阁楼货架
模具货架
悬臂货架
重型货架
中型货架
轻型货架
张家港货架
江阴货架
海安货架
金坛货架
巢湖货架
芜湖货架
马鞍山货架
合肥货架
安徽货架
温岭货架
阁楼货架
悬臂货架
模具货架
重型货架
路桥货架
东营货架
临安货架
义乌货架
铜陵货架
诸暨货架
慈溪货架
余姚货架
余杭货架
萧山货架
海宁货架
衢州货架
金华货架
温州货架
台州货架
绍兴货架
宁波货架
湖州货架
嘉兴货架
浙江货架
杭州货架
上海货架
无锡货架
常州货架
淮阴货架
连云港货架
徐州货架
盐城货架
扬州货架
苏州货架
镇江货架
上海货架
南京货架
苏州货架
中型货架
轻型货架
合肥货架
安徽货架
威海货架
青岛货架
济南货架
山东货架
洛阳货架
河南货架
西安货架
陕西货架
四川货架
武汉货架
湖北货架
句容货架
仪征货架
江都货架
昆山货架
太仓货架
吴江货架
江阴货架
无锡货架
轻型货架
重型货架
中型货架
悬臂货架
模具货架
阁楼货架
丹阳货架
金坛货架
常熟货架
常州货架
淮阴货架
盐城货架
徐州货架
扬州货架
南通货架
苏州货架
南京货架
东台货架
中型货架
重型货架
轻型货架
苏州货架
悬臂货架
中型货架
轻型货架
中型货架
萧山货架
阁楼货架
昆山货架
温州货架
浙江货架
常州货架
南京货架
轻型货架
重型货架
海宁货架
奉化货架
余姚货架
慈溪货架
上虞货架
诸暨货架
舟山货架
温岭货架
瑞安货架
义乌货架
青田货架
上海货架
轻型货架
中型货架
重型货架
悬臂货架
模具货架
阁楼货架
工业货架
求购货架
马鞍山货架
铜陵货架
宣城货架
巢湖货架
浙江货架
杭州货架
湖州货架
嘉兴货架
宁波货架
绍兴货架
台州货架
温州货架
金华货架
余杭货架
衢州货架
萧山货架
建德货架
临安货架
平湖货架
嘉善货架
吴江货架
江阴货架
昆山货架
太仓货架
仪征货架
句容货架
湖北货架
武汉货架
四川货架
陕西货架
西安货架
河南货架
洛阳货架
山东货架
济南货架
青岛货架
威海货架
安徽货架
合肥货架
芜湖货架
南京货架
镇江货架
苏州货架
南通货架
扬州货架
盐城货架
徐州货架
淮阴货架
连云港货架
常州货架
东台货架
丹阳货架
金坛货架
常熟货架
张家港货架
江阴货架
仓储笼
瑞安货架
义乌货架
青田货架
上海货架
温岭货架
诸暨货架
慈溪货架
余姚货架
奉化货架
海宁货架
嘉善货架
平湖货架
临安货架
建德货架
萧山货架
衢州货架
余杭货架
金华货架
温州货架
山东货架
洛阳货架
河南货架
西安货架
合肥货架
安徽货架
威海货架
青岛货架
济南货架
芜湖货架
马鞍山货架
宣城货架
铜陵货架
浙江货架
巢湖货架
湖州货架
杭州货架
嘉兴货架
绍兴货架
宁波货架
台州货架
中型货架
阁楼货架
模具货架
悬臂货架
重型货架
工业货架
无锡货架
南京货架
南通货架
苏州货架
镇江货架
扬州货架
盐城货架
连云港货架
淮阴货架
徐州货架
金坛货架
丹阳货架
常州货架
张家港货架
常熟货架
昆山货架
吴江货架
江阴货架
太仓货架
句容货架
仪征货架
江都货架
武汉货架
湖北货架
四川货架
台州货架
轻型货架
杭州货架
湖州货架
杭州货架
隔离网片
贯通式货架
模具货架
悬臂货架
重型货架
中型货架
轻型货架
重型货架
悬臂货架
悬臂货架
悬臂货架
模具货架
模具货架
模具货架
4S店货架
4S店货架
阁楼货架
仓储笼
料箱
登高车
塑料托盘
轻型货架
轻型货架
轻型货架
中型货架
中型货架
中型货架
中型货架
角钢货架
轻型货架
轻型货架
中型货架
中型货架
重型货架
重型货架
模具货架
模具货架
悬臂货架
悬臂货架
阁楼货架
阁楼货架
料箱
料箱
仓储笼
仓储笼
贯通货架
网片
丽水仓储笼
余杭仓储笼
金华仓储笼
温州仓储笼
台州仓储笼
绍兴仓储笼
宁波仓储笼
嘉兴仓储笼
湖州仓储笼
杭州仓储笼
常州仓储笼
连云港仓储笼
淮阴仓储笼
徐州仓储笼
盐城仓储笼
扬州仓储笼
南通仓储笼
苏州仓储笼
镇江仓储笼
仓储笼
中型货架
中型货架
重型货架
重型货架
重型货架
重型货架
重型货架
模具货架
模具货架
模具货架
模具货架
模具货架
悬臂货架
悬臂货架
悬臂货架
悬臂货架
悬臂货架
阁楼货架
阁楼货架
阁楼货架
阁楼货架
轻型货架
中型货架
重型货架
海宁货架
常州料箱
连云港料箱
淮阴料箱
徐州料箱
盐城料箱
扬州料箱
南通钢制料箱
镇江料箱
南京料箱
无锡料箱
轻型货架
南通货架
轻型货架
重型货架
杭州货架
宁波货架
衢州货架
余姚货架
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
不锈钢管
小游戏
激情电影
美容BB霜免费赠送
英语天地
手机游戏下载

设计之家
美容时尚网
美食在线
<p>重型货架
无锡货架
苏州货架
中型货架
重型货架
模具货架
悬臂货架
中型货架
重型货架
江都货架
泰州货架
太仓货架
昆山货架
吴江货架
张家港货架
常熟货架
溧阳货架
金坛货架
扬中货架
丹阳货架
淮阴货架
无锡货架
常州货架
徐州货架
轻型货架
上海货架
马鞍山货架
蚌埠货架
安徽货架
仪征货架
常熟货架
常州货架
盐城货架
南通货架
镇江货架
江苏货架
下沙货架
临安货架
义乌货架
嘉善货架
余姚货架
衢州货架
金华货架
台州货架
宁波货架
嘉兴货架
杭州货架
浙江货架
杭州货架
湖州货架
嘉兴货架
宁波货架
绍兴货架
杭州货架
湖州货架
嘉兴货架
绍兴货架
台州货架
液压搬运车
登高车
合肥货架
句容货架
太仓货架
金坛货架
徐州货架
镇江货架
苏州货架
常州货架
张家港货架
江阴货架
连云港货架
常州货架
无锡货架
丹阳货架
扬中货架
金坛货架
常熟货架
张家港货架
江阴货架
昆山货架
仪征货架
« PrevPage 1Next »

Add Comment